diff --git a/builder.py b/builder.py index 357dd24e40..933b472865 100644 --- a/builder.py +++ b/builder.py @@ -3,13 +3,13 @@ """ import fileinput import os -from pathlib import Path import platform import re import subprocess import sys import sysconfig from distutils.version import LooseVersion +from pathlib import Path from typing import Any, Dict, List from setuptools.command.build_ext import build_ext diff --git a/examples/ars_solver.py b/examples/ars_solver.py index 8934661878..e6b5a0f6a3 100755 --- a/examples/ars_solver.py +++ b/examples/ars_solver.py @@ -1,10 +1,10 @@ import gym import gym_jsbsim + from skdecide.hub.domain.gym import GymDomain from skdecide.hub.solver.ars import ars from skdecide.utils import load_registered_domain, rollout - if __name__ == "__main__": try_domains = [ diff --git a/examples/discrete_optimization/plot_results_do.py b/examples/discrete_optimization/plot_results_do.py index cf998d15cd..0eb64b8023 100644 --- a/examples/discrete_optimization/plot_results_do.py +++ b/examples/discrete_optimization/plot_results_do.py @@ -5,21 +5,23 @@ # Plot utilities outside of the main library, needs additional dependencies like seaborn. from __future__ import annotations + +import math from typing import List + +import matplotlib.cm as cm import matplotlib.pyplot as plt -from skdecide.discrete_optimization.generic_tools.result_storage.resultcomparator import ( - ResultComparator, -) +import numpy as np +import seaborn as sns # You'd need seaborn for this example. + from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( + ParetoFront, ResultStorage, result_storage_to_pareto_front, - ParetoFront, ) -import seaborn as sns # You'd need seaborn for this example. -import matplotlib.cm as cm - -import numpy as np -import math +from skdecide.discrete_optimization.generic_tools.result_storage.resultcomparator import ( + ResultComparator, +) def plot_storage_2d( diff --git a/examples/discrete_optimization/rcpsp_multiskill_parser_example.py b/examples/discrete_optimization/rcpsp_multiskill_parser_example.py index 32ac21357a..dafbc478c9 100644 --- a/examples/discrete_optimization/rcpsp_multiskill_parser_example.py +++ b/examples/discrete_optimization/rcpsp_multiskill_parser_example.py @@ -6,6 +6,7 @@ from __future__ import annotations + import os path_to_data = os.path.join( diff --git a/examples/full_multisolve.py b/examples/full_multisolve.py index c6977142d0..6f14a7ee67 100644 --- a/examples/full_multisolve.py +++ b/examples/full_multisolve.py @@ -2,24 +2,25 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +from math import sqrt +from typing import Any, Callable + import gym import numpy as np from stable_baselines3 import PPO -from typing import Any, Callable -from math import sqrt from skdecide import Value +from skdecide.hub.domain.gym import ( + GymDiscreteActionDomain, + GymPlanningDomain, + GymWidthDomain, +) from skdecide.utils import ( load_registered_domain, load_registered_solver, match_solvers, rollout, ) -from skdecide.hub.domain.gym import ( - GymPlanningDomain, - GymWidthDomain, - GymDiscreteActionDomain, -) class D(GymPlanningDomain, GymWidthDomain, GymDiscreteActionDomain): diff --git a/examples/grid_mdp_multisolve.py b/examples/grid_mdp_multisolve.py index 40ad75cefd..54697f0e4f 100644 --- a/examples/grid_mdp_multisolve.py +++ b/examples/grid_mdp_multisolve.py @@ -2,23 +2,23 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +from collections import namedtuple from enum import Enum -from typing import NamedTuple, Optional from math import sqrt +from typing import NamedTuple, Optional + from pathos.helpers import mp -from collections import namedtuple from skdecide import ( - GoalMDPDomain, - Value, - Value, - Space, DiscreteDistribution, EnvironmentOutcome, + GoalMDPDomain, + Space, TransitionOutcome, + Value, ) from skdecide.builders.domain import Actions -from skdecide.hub.space.gym import ListSpace, EnumSpace, MultiDiscreteSpace +from skdecide.hub.space.gym import EnumSpace, ListSpace, MultiDiscreteSpace from skdecide.utils import load_registered_solver, rollout diff --git a/examples/grid_multisolve.py b/examples/grid_multisolve.py index a61995db9f..f2c21fe5ac 100644 --- a/examples/grid_multisolve.py +++ b/examples/grid_multisolve.py @@ -3,23 +3,22 @@ # LICENSE file in the root directory of this source tree. from enum import Enum -from typing import NamedTuple, Optional -from pathos.helpers import mp from math import sqrt +from typing import NamedTuple, Optional +from pathos.helpers import mp from stable_baselines3 import PPO from skdecide import ( DeterministicPlanningDomain, - Value, - Value, - Space, EnvironmentOutcome, - TransitionOutcome, SingleValueDistribution, + Space, + TransitionOutcome, + Value, ) from skdecide.builders.domain import UnrestrictedActions -from skdecide.hub.space.gym import ListSpace, EnumSpace, MultiDiscreteSpace +from skdecide.hub.space.gym import EnumSpace, ListSpace, MultiDiscreteSpace from skdecide.utils import load_registered_solver, rollout diff --git a/examples/gym_jsbsim_greedy.py b/examples/gym_jsbsim_greedy.py index d11e51799b..412c2337c0 100644 --- a/examples/gym_jsbsim_greedy.py +++ b/examples/gym_jsbsim_greedy.py @@ -2,21 +2,20 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +from typing import Any, Callable + +import folium import gym import gym_jsbsim import numpy as np -import folium - -from typing import Callable, Any +from gym_jsbsim.catalogs.catalog import Catalog as prp +from gym_jsbsim.envs.taxi_utils import * from skdecide import Solver -from skdecide.hub.domain.gym import DeterministicGymDomain, GymDiscreteActionDomain from skdecide.builders.solver import DeterministicPolicies, Utilities +from skdecide.hub.domain.gym import DeterministicGymDomain, GymDiscreteActionDomain from skdecide.utils import rollout -from gym_jsbsim.catalogs.catalog import Catalog as prp -from gym_jsbsim.envs.taxi_utils import * - # ENV_NAME = 'GymJsbsim-HeadingControlTask-v0' ENV_NAME = "GymJsbsim-TaxiapControlTask-v0" HORIZON = 1000 diff --git a/examples/gym_jsbsim_iw.py b/examples/gym_jsbsim_iw.py index da4b7661a8..f534f3cc7e 100644 --- a/examples/gym_jsbsim_iw.py +++ b/examples/gym_jsbsim_iw.py @@ -2,36 +2,35 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +from typing import Any, Callable, Optional + +import folium import gym import gym_jsbsim import numpy as np -import folium - -from typing import Callable, Any, Optional +from gym_jsbsim.catalogs.catalog import Catalog as prp +from gym_jsbsim.envs.taxi_utils import * -from skdecide import TransitionOutcome, Value, EnvironmentOutcome, Domain +from skdecide import Domain, EnvironmentOutcome, TransitionOutcome, Value from skdecide.builders.domain import ( - SingleAgent, - Sequential, - Environment, Actions, DeterministicInitialized, - Markovian, + Environment, FullyObservable, + Markovian, Rewards, + Sequential, + SingleAgent, ) from skdecide.hub.domain.gym import ( - GymPlanningDomain, - GymWidthDomain, GymDiscreteActionDomain, GymDomainStateProxy, + GymPlanningDomain, + GymWidthDomain, ) from skdecide.hub.solver.iw import IW from skdecide.utils import rollout -from gym_jsbsim.catalogs.catalog import Catalog as prp -from gym_jsbsim.envs.taxi_utils import * - # ENV_NAME = 'GymJsbsim-HeadingControlTask-v0' ENV_NAME = "GymJsbsim-TaxiapControlTask-v0" HORIZON = 5000 diff --git a/examples/gym_jsbsim_riw.py b/examples/gym_jsbsim_riw.py index b8343bb52a..353a444a64 100644 --- a/examples/gym_jsbsim_riw.py +++ b/examples/gym_jsbsim_riw.py @@ -2,30 +2,29 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -import gym -import gym_jsbsim -import numpy as np -import folium import bisect -import math import json +import math +from typing import Any, Callable -from typing import Callable, Any +import folium +import gym +import gym_jsbsim +import numpy as np +from gym_jsbsim.catalogs.catalog import Catalog as prp +from gym_jsbsim.envs.taxi_utils import * -from skdecide import TransitionOutcome, Value, Domain +from skdecide import Domain, TransitionOutcome, Value from skdecide.builders.domain import DeterministicInitialized from skdecide.hub.domain.gym import ( - GymWidthDomain, GymDiscreteActionDomain, - GymDomainStateProxy, GymDomainHashable, + GymDomainStateProxy, + GymWidthDomain, ) from skdecide.hub.solver.riw import RIW from skdecide.utils import rollout -from gym_jsbsim.catalogs.catalog import Catalog as prp -from gym_jsbsim.envs.taxi_utils import * - # ENV_NAME = 'GymJsbsim-HeadingControlTask-v0' ENV_NAME = "GymJsbsim-TaxiapControlTask-v0" HORIZON = 1000 diff --git a/examples/gym_jsbsim_uct.py b/examples/gym_jsbsim_uct.py index 80317412fe..bd8d3adac4 100644 --- a/examples/gym_jsbsim_uct.py +++ b/examples/gym_jsbsim_uct.py @@ -2,31 +2,30 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -import gym -import gym_jsbsim -import numpy as np -import folium import json import sys - from math import sqrt from typing import Any +import folium +import gym +import gym_jsbsim +import numpy as np +from gym_jsbsim.catalogs.catalog import Catalog as prp +from gym_jsbsim.envs.taxi_utils import * + from skdecide import EnvironmentOutcome -from skdecide.core import DiscreteDistribution from skdecide.builders.domain import DeterministicInitialized +from skdecide.core import DiscreteDistribution from skdecide.hub.domain.gym import ( + GymDiscreteActionDomain, GymDomain, GymDomainHashable, - GymDiscreteActionDomain, GymDomainStateProxy, ) from skdecide.hub.solver.mcts import UCT from skdecide.utils import rollout -from gym_jsbsim.catalogs.catalog import Catalog as prp -from gym_jsbsim.envs.taxi_utils import * - # ENV_NAME = 'GymJsbsim-HeadingControlTask-v0' ENV_NAME = "GymJsbsim-TaxiapControlTask-v0" HORIZON = 5000 diff --git a/examples/gym_line_control.py b/examples/gym_line_control.py index b30d710f2b..47a76d4e38 100644 --- a/examples/gym_line_control.py +++ b/examples/gym_line_control.py @@ -2,19 +2,19 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +from math import exp, fabs, sqrt +from typing import Any, Callable + import gym import numpy as np - -from typing import Callable, Any -from math import sqrt, exp, fabs from gym.envs.classic_control import rendering from skdecide import TransitionOutcome, Value from skdecide.builders.domain import Renderable from skdecide.hub.domain.gym import ( DeterministicInitializedGymDomain, - GymWidthDomain, GymDiscreteActionDomain, + GymWidthDomain, ) from skdecide.hub.solver.iw import IW from skdecide.hub.solver.riw import RIW diff --git a/examples/maxent_irl_solver.py b/examples/maxent_irl_solver.py index a9ab84891e..690460612d 100755 --- a/examples/maxent_irl_solver.py +++ b/examples/maxent_irl_solver.py @@ -1,9 +1,9 @@ import gym from skdecide.hub.domain.gym import GymDomain -from skdecide.hub.solver.maxent_irl import ( +from skdecide.hub.solver.maxent_irl import ( # maximum entropy inverse reinforcement learning MaxentIRL, -) # maximum entropy inverse reinforcement learning +) from skdecide.utils import rollout ENV_NAME = "MountainCar-v0" diff --git a/examples/maze_multiagent_mdp_multisolve.py b/examples/maze_multiagent_mdp_multisolve.py index 5e5e8648bd..774080bf94 100644 --- a/examples/maze_multiagent_mdp_multisolve.py +++ b/examples/maze_multiagent_mdp_multisolve.py @@ -2,11 +2,28 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +import operator as op +import random as rd +from copy import deepcopy from enum import Enum +from math import sqrt +from typing import Any, NamedTuple, Optional +import matplotlib.pyplot as plt + +from skdecide.builders.domain.agent import MultiAgent, SingleAgent +from skdecide.builders.domain.concurrency import Sequential +from skdecide.builders.domain.dynamics import Simulation, UncertainTransitions +from skdecide.builders.domain.events import Actions +from skdecide.builders.domain.goals import Goals +from skdecide.builders.domain.initialization import ( + DeterministicInitialized, + Initializable, +) +from skdecide.builders.domain.memory import Markovian from skdecide.builders.domain.observability import FullyObservable from skdecide.builders.domain.renderability import Renderable -from skdecide.builders.domain.goals import Goals +from skdecide.builders.domain.value import PositiveCosts from skdecide.core import ( DiscreteDistribution, Distribution, @@ -17,30 +34,12 @@ TransitionOutcome, Value, ) -from skdecide.builders.domain.value import PositiveCosts -from skdecide.builders.domain.memory import Markovian -from skdecide.builders.domain.initialization import ( - DeterministicInitialized, - Initializable, -) -from skdecide.builders.domain.events import Actions -from skdecide.builders.domain.dynamics import Simulation, UncertainTransitions -from skdecide.builders.domain.concurrency import Sequential -from skdecide.builders.domain.agent import MultiAgent, SingleAgent from skdecide.domains import Domain -from skdecide.hub.space.gym import ListSpace, EnumSpace, MultiDiscreteSpace -from skdecide.utils import load_registered_solver, rollout - +from skdecide.hub.solver.lrtdp import LRTDP from skdecide.hub.solver.martdp import MARTDP from skdecide.hub.solver.mcts import HMCTS -from skdecide.hub.solver.lrtdp import LRTDP - -from typing import Any, NamedTuple, Optional -import matplotlib.pyplot as plt -import random as rd -import operator as op -from math import sqrt -from copy import deepcopy +from skdecide.hub.space.gym import EnumSpace, ListSpace, MultiDiscreteSpace +from skdecide.utils import load_registered_solver, rollout DEFAULT_MAZE = """ +-+-+-+-+-+-+-+-+-+-+ diff --git a/examples/nocycle_grid_goal_mdp.py b/examples/nocycle_grid_goal_mdp.py index 8e8a246b6f..bf79407d8d 100644 --- a/examples/nocycle_grid_goal_mdp.py +++ b/examples/nocycle_grid_goal_mdp.py @@ -2,19 +2,19 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +import getopt +import sys from enum import IntEnum -from typing import NamedTuple, Optional, Iterable from math import sqrt -import getopt, sys +from typing import Iterable, NamedTuple, Optional from skdecide import ( - GoalMDPDomain, - Value, - Value, - Space, + DiscreteDistribution, EnumerableSpace, + GoalMDPDomain, ImplicitSpace, - DiscreteDistribution, + Space, + Value, ) from skdecide.builders.domain import Actions from skdecide.hub.space.gym import MultiDiscreteSpace diff --git a/examples/rllib_solver.py b/examples/rllib_solver.py index 37c87fb8ad..3527e1ae93 100644 --- a/examples/rllib_solver.py +++ b/examples/rllib_solver.py @@ -9,7 +9,6 @@ from skdecide.hub.solver.ray_rllib import RayRLlib from skdecide.utils import rollout - ENV_NAME = "CartPole-v1" domain_factory = lambda: GymDomain(gym.make(ENV_NAME)) diff --git a/examples/scheduling/gphh_example.py b/examples/scheduling/gphh_example.py index 640332748e..212a00728f 100644 --- a/examples/scheduling/gphh_example.py +++ b/examples/scheduling/gphh_example.py @@ -1,38 +1,40 @@ +import json +import operator +import os +import pickle + +import numpy as np + +from examples.discrete_optimization.rcpsp_parser_example import ( + get_complete_path, + get_data_available, +) from skdecide import rollout_episode -from skdecide.hub.domain.rcpsp.rcpsp_sk_parser import load_domain from skdecide.hub.domain.rcpsp.rcpsp_sk import RCPSP +from skdecide.hub.domain.rcpsp.rcpsp_sk_parser import load_domain from skdecide.hub.solver.do_solver.do_solver_scheduling import DOSolver, SolvingMethod -from skdecide.hub.solver.sgs_policies.sgs_policies import ( - PolicyMethodParams, - BasePolicyMethod, -) from skdecide.hub.solver.gphh.gphh import ( GPHH, + EvaluationGPHH, + FeatureEnum, + GPHHPolicy, + ParametersGPHH, + PermutationDistance, + PoolAggregationMethod, + PooledGPHHPolicy, + PrimitiveSet, feature_average_resource_requirements, feature_n_predecessors, feature_n_successors, feature_task_duration, feature_total_n_res, - FeatureEnum, - ParametersGPHH, - protected_div, max_operator, min_operator, - PrimitiveSet, - PermutationDistance, - EvaluationGPHH, - GPHHPolicy, - PooledGPHHPolicy, - PoolAggregationMethod, + protected_div, ) -import operator -import numpy as np -import json -import pickle -import os -from examples.discrete_optimization.rcpsp_parser_example import ( - get_complete_path, - get_data_available, +from skdecide.hub.solver.sgs_policies.sgs_policies import ( + BasePolicyMethod, + PolicyMethodParams, ) @@ -489,10 +491,11 @@ def run_features(): def run_comparaison_stochastic(): import random + from skdecide.hub.domain.rcpsp.rcpsp_sk import ( RCPSP, - build_stochastic_from_deterministic, build_n_determinist_from_stochastic, + build_stochastic_from_deterministic, ) repeat_runs = 5 @@ -739,9 +742,10 @@ def run_comparaison_stochastic(): def run_comparaison(): - from examples.discrete_optimization.rcpsp_parser_example import get_data_available import os + from examples.discrete_optimization.rcpsp_parser_example import get_data_available + files = get_data_available() all_single_mode = [os.path.basename(f) for f in files if "sm" in f] # training_cphh = ["j1201_"+str(i)+".sm" for i in range(2, 11)] diff --git a/examples/scheduling/policy_sgs_works.py b/examples/scheduling/policy_sgs_works.py index eb97e1a6f4..0329f1b3d3 100644 --- a/examples/scheduling/policy_sgs_works.py +++ b/examples/scheduling/policy_sgs_works.py @@ -1,9 +1,10 @@ -from skdecide.hub.domain.rcpsp.rcpsp_sk_parser import load_domain +from examples.discrete_optimization.rcpsp_parser_example import get_complete_path from skdecide.hub.domain.rcpsp.rcpsp_sk import ( RCPSP, - build_stochastic_from_deterministic, build_n_determinist_from_stochastic, + build_stochastic_from_deterministic, ) +from skdecide.hub.domain.rcpsp.rcpsp_sk_parser import load_domain from skdecide.hub.solver.do_solver.do_solver_scheduling import ( DOSolver, SolvingMethod, @@ -14,10 +15,9 @@ rollout_based_compute_expected_cost_for_policy_scheduling, ) from skdecide.hub.solver.sgs_policies.sgs_policies import ( - PolicyMethodParams, BasePolicyMethod, + PolicyMethodParams, ) -from examples.discrete_optimization.rcpsp_parser_example import get_complete_path # Compare different online policies based on permutation on few sampled scenarios. diff --git a/examples/scheduling/rcpsp_examples.py b/examples/scheduling/rcpsp_examples.py index ea3504c745..e8335dd593 100644 --- a/examples/scheduling/rcpsp_examples.py +++ b/examples/scheduling/rcpsp_examples.py @@ -1,28 +1,26 @@ +from examples.discrete_optimization.rcpsp_multiskill_parser_example import ( + get_complete_path_ms, + get_data_available_ms, +) +from examples.discrete_optimization.rcpsp_parser_example import ( + get_complete_path, + get_data_available, +) +from skdecide import DiscreteDistribution, rollout_episode from skdecide.builders.domain.scheduling.scheduling_domains_modelling import ( SchedulingAction, SchedulingActionEnum, State, ) - -from skdecide import rollout_episode, DiscreteDistribution - +from skdecide.hub.domain.rcpsp.rcpsp_sk import MSRCPSP, RCPSP from skdecide.hub.domain.rcpsp.rcpsp_sk_parser import ( load_domain, load_multiskill_domain, ) -from skdecide.hub.domain.rcpsp.rcpsp_sk import RCPSP, MSRCPSP from skdecide.hub.solver.do_solver.do_solver_scheduling import DOSolver, SolvingMethod from skdecide.hub.solver.sgs_policies.sgs_policies import ( - PolicyMethodParams, BasePolicyMethod, -) -from examples.discrete_optimization.rcpsp_parser_example import ( - get_complete_path, - get_data_available, -) -from examples.discrete_optimization.rcpsp_multiskill_parser_example import ( - get_data_available_ms, - get_complete_path_ms, + PolicyMethodParams, ) @@ -44,11 +42,9 @@ def random_walk(): print("end task", task_id, ": ", states[-1].tasks_details[task_id].end) from skdecide.discrete_optimization.rcpsp.rcpsp_plot_utils import ( plot_resource_individual_gantt, - plt, - ) - from skdecide.discrete_optimization.rcpsp.rcpsp_plot_utils import plot_task_gantt - from skdecide.discrete_optimization.rcpsp.rcpsp_plot_utils import ( plot_ressource_view, + plot_task_gantt, + plt, ) from skdecide.hub.solver.do_solver.sk_to_do_binding import ( from_last_state_to_solution, diff --git a/examples/scheduling/sk_to_do.py b/examples/scheduling/sk_to_do.py index a2558abd1d..04ee273765 100644 --- a/examples/scheduling/sk_to_do.py +++ b/examples/scheduling/sk_to_do.py @@ -1,9 +1,10 @@ from examples.scheduling.toy_rcpsp_examples import ( - MyExampleRCPSPDomain, MyExampleMRCPSPDomain_WithCost, + MyExampleRCPSPDomain, ) from skdecide.hub.solver.do_solver.sk_to_do_binding import build_do_domain + # Testing the binding between skdecide and discrete-optimization lib def create_do_from_sk(): rcpsp_domain = MyExampleRCPSPDomain() @@ -14,10 +15,10 @@ def create_do_from_sk(): print( "Loading multimode-rcpsp domain : resulting class in DO : ", do_domain.__class__ ) - from skdecide.hub.domain.rcpsp.rcpsp_sk_parser import load_multiskill_domain from examples.discrete_optimization.rcpsp_multiskill_parser_example import ( get_data_available_ms, ) + from skdecide.hub.domain.rcpsp.rcpsp_sk_parser import load_multiskill_domain rcpsp_domain = load_multiskill_domain(get_data_available_ms()[0]) do_domain = build_do_domain(rcpsp_domain) diff --git a/examples/scheduling/toy_rcpsp_examples.py b/examples/scheduling/toy_rcpsp_examples.py index 7d104bd0f1..acd8970dce 100644 --- a/examples/scheduling/toy_rcpsp_examples.py +++ b/examples/scheduling/toy_rcpsp_examples.py @@ -1,22 +1,20 @@ -from enum import Enum -from typing import Dict, List, Any, Optional, Union, Set import random +from enum import Enum +from typing import Any, Dict, List, Optional, Set, Union +from skdecide import DiscreteDistribution, Distribution, rollout_episode +from skdecide.builders.domain.scheduling.modes import ( + ConstantModeConsumption, + ModeConsumption, +) from skdecide.builders.domain.scheduling.scheduling_domains import ( - SingleModeRCPSP, + MultiModeRCPSPWithCost, SchedulingObjectiveEnum, + SingleModeRCPSP, + SingleModeRCPSP_Simulated_Stochastic_Durations_WithConditionalTasks, SingleModeRCPSP_Stochastic_Durations, SingleModeRCPSP_Stochastic_Durations_WithConditionalTasks, - SingleModeRCPSP_Simulated_Stochastic_Durations_WithConditionalTasks, - MultiModeRCPSPWithCost, -) -from skdecide import Distribution, DiscreteDistribution - -from skdecide.builders.domain.scheduling.modes import ( - ModeConsumption, - ConstantModeConsumption, ) -from skdecide import rollout_episode class MyExampleRCPSPDomain(SingleModeRCPSP): @@ -475,11 +473,9 @@ def run_astar(): do_sol = from_last_state_to_solution(states[-1], domain) from skdecide.discrete_optimization.rcpsp.rcpsp_plot_utils import ( plot_resource_individual_gantt, - plt, - ) - from skdecide.discrete_optimization.rcpsp.rcpsp_plot_utils import plot_task_gantt - from skdecide.discrete_optimization.rcpsp.rcpsp_plot_utils import ( plot_ressource_view, + plot_task_gantt, + plt, ) plot_task_gantt(do_sol.problem, do_sol) @@ -490,9 +486,9 @@ def run_astar(): def run_do(): from skdecide.hub.solver.do_solver.do_solver_scheduling import ( + BasePolicyMethod, DOSolver, PolicyMethodParams, - BasePolicyMethod, SolvingMethod, ) @@ -526,11 +522,9 @@ def run_do(): do_sol = from_last_state_to_solution(states[-1], domain) from skdecide.discrete_optimization.rcpsp.rcpsp_plot_utils import ( plot_resource_individual_gantt, - plt, - ) - from skdecide.discrete_optimization.rcpsp.rcpsp_plot_utils import plot_task_gantt - from skdecide.discrete_optimization.rcpsp.rcpsp_plot_utils import ( plot_ressource_view, + plot_task_gantt, + plt, ) plot_task_gantt(do_sol.problem, do_sol) @@ -584,10 +578,11 @@ def run_graph_exploration_conditional(): domain.set_inplace_environment(False) state = domain.get_initial_state() print("Initial state : ", state) + from itertools import count + from skdecide.hub.solver.graph_explorer.DFS_Uncertain_Exploration import ( DFSExploration, ) - from itertools import count c = count() score_state = lambda x: ( diff --git a/examples/tutorial.py b/examples/tutorial.py index bd1d2bfcd8..8d6f9116ce 100644 --- a/examples/tutorial.py +++ b/examples/tutorial.py @@ -15,9 +15,9 @@ from skdecide import * from skdecide.builders.domain import * -from skdecide.utils import rollout -from skdecide.hub.space.gym import ListSpace, EnumSpace from skdecide.hub.solver.lazy_astar import LazyAstar +from skdecide.hub.space.gym import EnumSpace, ListSpace +from skdecide.utils import rollout # %% """ diff --git a/skdecide/__init__.py b/skdecide/__init__.py index 4c70371a17..6dc2c86502 100644 --- a/skdecide/__init__.py +++ b/skdecide/__init__.py @@ -2,8 +2,8 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +from skdecide import hub from skdecide.core import * from skdecide.domains import * from skdecide.solvers import * from skdecide.utils import * -from skdecide import hub diff --git a/skdecide/builders/domain/concurrency.py b/skdecide/builders/domain/concurrency.py index 86f5ccb51b..fbb010c96e 100644 --- a/skdecide/builders/domain/concurrency.py +++ b/skdecide/builders/domain/concurrency.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Union, List +from typing import List, Union __all__ = ["Parallel", "Sequential"] diff --git a/skdecide/builders/domain/constraints.py b/skdecide/builders/domain/constraints.py index e622aa5742..2a944ef47e 100644 --- a/skdecide/builders/domain/constraints.py +++ b/skdecide/builders/domain/constraints.py @@ -7,7 +7,7 @@ import functools from typing import List -from skdecide.core import D, Constraint, autocastable +from skdecide.core import Constraint, D, autocastable __all__ = ["Constrained"] diff --git a/skdecide/builders/domain/dynamics.py b/skdecide/builders/domain/dynamics.py index fcdcd69790..d8edfdb4fc 100644 --- a/skdecide/builders/domain/dynamics.py +++ b/skdecide/builders/domain/dynamics.py @@ -9,12 +9,12 @@ from skdecide.core import ( D, - Distribution, DiscreteDistribution, - SingleValueDistribution, - Value, + Distribution, EnvironmentOutcome, + SingleValueDistribution, TransitionOutcome, + Value, autocastable, ) diff --git a/skdecide/builders/domain/events.py b/skdecide/builders/domain/events.py index 66a8806047..a1982f6481 100644 --- a/skdecide/builders/domain/events.py +++ b/skdecide/builders/domain/events.py @@ -7,7 +7,7 @@ import functools from typing import Optional, Union -from skdecide.core import D, Space, EmptySpace, autocastable +from skdecide.core import D, EmptySpace, Space, autocastable __all__ = ["Events", "Actions", "UnrestrictedActions"] diff --git a/skdecide/builders/domain/memory.py b/skdecide/builders/domain/memory.py index 6421e6e85b..117159b2b6 100644 --- a/skdecide/builders/domain/memory.py +++ b/skdecide/builders/domain/memory.py @@ -5,7 +5,7 @@ from __future__ import annotations import functools -from typing import Union, Optional +from typing import Optional, Union from skdecide.core import D, Memory diff --git a/skdecide/builders/domain/observability.py b/skdecide/builders/domain/observability.py index ce4113c7b7..9eeb892710 100644 --- a/skdecide/builders/domain/observability.py +++ b/skdecide/builders/domain/observability.py @@ -5,9 +5,9 @@ from __future__ import annotations import functools -from typing import Union, Optional +from typing import Optional, Union -from skdecide.core import D, Space, Distribution, SingleValueDistribution, autocastable +from skdecide.core import D, Distribution, SingleValueDistribution, Space, autocastable __all__ = ["PartiallyObservable", "TransformedObservable", "FullyObservable"] diff --git a/skdecide/builders/domain/scheduling/conditional_tasks.py b/skdecide/builders/domain/scheduling/conditional_tasks.py index 2b51696e04..afe55c02b0 100644 --- a/skdecide/builders/domain/scheduling/conditional_tasks.py +++ b/skdecide/builders/domain/scheduling/conditional_tasks.py @@ -4,9 +4,10 @@ from __future__ import annotations -from enum import Enum -from typing import List, Dict, Tuple, Set import random +from enum import Enum +from typing import Dict, List, Set, Tuple + from skdecide.core import Distribution # from skdecide.builders.scheduling.scheduling_domains import State diff --git a/skdecide/builders/domain/scheduling/graph_toolbox.py b/skdecide/builders/domain/scheduling/graph_toolbox.py index 9586110d6a..7cda845cdf 100644 --- a/skdecide/builders/domain/scheduling/graph_toolbox.py +++ b/skdecide/builders/domain/scheduling/graph_toolbox.py @@ -4,8 +4,9 @@ from __future__ import annotations +from typing import Any, Dict, Hashable, List, Tuple + import networkx as nx -from typing import Dict, List, Any, Tuple, Hashable class Graph: diff --git a/skdecide/builders/domain/scheduling/modes.py b/skdecide/builders/domain/scheduling/modes.py index b92363caeb..9d72194e08 100644 --- a/skdecide/builders/domain/scheduling/modes.py +++ b/skdecide/builders/domain/scheduling/modes.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Dict, Union, Set, Any +from typing import Any, Dict, List, Set, Union __all__ = ["MultiMode", "SingleMode"] diff --git a/skdecide/builders/domain/scheduling/precedence.py b/skdecide/builders/domain/scheduling/precedence.py index a5e759bfef..2df27df9d8 100644 --- a/skdecide/builders/domain/scheduling/precedence.py +++ b/skdecide/builders/domain/scheduling/precedence.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Dict +from typing import Dict, List from skdecide.builders.domain.scheduling.graph_toolbox import Graph from skdecide.builders.domain.scheduling.scheduling_domains_modelling import State diff --git a/skdecide/builders/domain/scheduling/preemptivity.py b/skdecide/builders/domain/scheduling/preemptivity.py index c9b1812948..60297b84b6 100644 --- a/skdecide/builders/domain/scheduling/preemptivity.py +++ b/skdecide/builders/domain/scheduling/preemptivity.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Dict +from typing import Dict, List __all__ = ["WithPreemptivity", "WithoutPreemptivity"] diff --git a/skdecide/builders/domain/scheduling/resource_availability.py b/skdecide/builders/domain/scheduling/resource_availability.py index 583f9dc431..baaff2d6b4 100644 --- a/skdecide/builders/domain/scheduling/resource_availability.py +++ b/skdecide/builders/domain/scheduling/resource_availability.py @@ -4,8 +4,8 @@ from __future__ import annotations -from typing import List, Union, Dict, Optional from enum import Enum +from typing import Dict, List, Optional, Union __all__ = [ "UncertainResourceAvailabilityChanges", diff --git a/skdecide/builders/domain/scheduling/resource_consumption.py b/skdecide/builders/domain/scheduling/resource_consumption.py index 8e7a0cd476..69e60614b4 100644 --- a/skdecide/builders/domain/scheduling/resource_consumption.py +++ b/skdecide/builders/domain/scheduling/resource_consumption.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Dict, Union, Set, Any +from typing import Any, Dict, List, Set, Union __all__ = ["VariableResourceConsumption", "ConstantResourceConsumption"] diff --git a/skdecide/builders/domain/scheduling/resource_renewability.py b/skdecide/builders/domain/scheduling/resource_renewability.py index 7db9fd14c5..3d02b90f97 100644 --- a/skdecide/builders/domain/scheduling/resource_renewability.py +++ b/skdecide/builders/domain/scheduling/resource_renewability.py @@ -5,6 +5,7 @@ from __future__ import annotations from typing import Dict + from skdecide.builders.domain.scheduling.scheduling_domains_modelling import State __all__ = ["MixedRenewable", "RenewableOnly"] diff --git a/skdecide/builders/domain/scheduling/resource_type.py b/skdecide/builders/domain/scheduling/resource_type.py index 639cb0a552..fdbee3a3dc 100644 --- a/skdecide/builders/domain/scheduling/resource_type.py +++ b/skdecide/builders/domain/scheduling/resource_type.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Dict, Any +from typing import Any, Dict, List __all__ = [ "WithResourceTypes", diff --git a/skdecide/builders/domain/scheduling/scheduling_domains.py b/skdecide/builders/domain/scheduling/scheduling_domains.py index 0d95a9a39d..3e99eed84e 100644 --- a/skdecide/builders/domain/scheduling/scheduling_domains.py +++ b/skdecide/builders/domain/scheduling/scheduling_domains.py @@ -4,96 +4,97 @@ from __future__ import annotations -from typing import Optional, Dict, Set, List, Iterable, Tuple -from skdecide.builders.domain.scheduling.graph_toolbox import Graph +import random +from enum import Enum +from itertools import product +from typing import Dict, Iterable, List, Optional, Set, Tuple + from skdecide import ( + DiscreteDistribution, + Distribution, Domain, + EnumerableSpace, + ImplicitSpace, + SamplableSpace, Space, - Value, - Distribution, + T, TransitionOutcome, - ImplicitSpace, - DiscreteDistribution, + Value, ) from skdecide.builders.domain import ( - SingleAgent, - Sequential, - DeterministicTransitions, - DeterministicInitialized, Actions, + DeterministicInitialized, + DeterministicTransitions, FullyObservable, - Markovian, Goals, + Markovian, + Sequential, Simulation, + SingleAgent, UncertainTransitions, ) - -from skdecide.builders.domain.scheduling.modes import SingleMode, MultiMode -from skdecide.builders.domain.scheduling.resource_consumption import ( - VariableResourceConsumption, - ConstantResourceConsumption, +from skdecide.builders.domain.scheduling.conditional_tasks import ( + WithConditionalTasks, + WithoutConditionalTasks, +) +from skdecide.builders.domain.scheduling.graph_toolbox import Graph +from skdecide.builders.domain.scheduling.modes import MultiMode, SingleMode +from skdecide.builders.domain.scheduling.preallocations import ( + WithoutPreallocations, + WithPreallocations, ) from skdecide.builders.domain.scheduling.precedence import WithPrecedence from skdecide.builders.domain.scheduling.preemptivity import ( - WithPreemptivity, WithoutPreemptivity, + WithPreemptivity, ) -from skdecide.builders.domain.scheduling.resource_type import ( - WithResourceTypes, - WithResourceUnits, - WithoutResourceUnit, +from skdecide.builders.domain.scheduling.resource_availability import ( + DeterministicResourceAvailabilityChanges, + UncertainResourceAvailabilityChanges, + WithoutResourceAvailabilityChange, +) +from skdecide.builders.domain.scheduling.resource_consumption import ( + ConstantResourceConsumption, + VariableResourceConsumption, +) +from skdecide.builders.domain.scheduling.resource_costs import ( + WithModeCosts, + WithoutModeCosts, + WithoutResourceCosts, + WithResourceCosts, ) from skdecide.builders.domain.scheduling.resource_renewability import ( - RenewableOnly, MixedRenewable, + RenewableOnly, +) +from skdecide.builders.domain.scheduling.resource_type import ( + WithoutResourceUnit, + WithResourceTypes, + WithResourceUnits, ) from skdecide.builders.domain.scheduling.scheduling_domains_modelling import ( + SchedulingAction, SchedulingActionEnum, State, - SchedulingAction, +) +from skdecide.builders.domain.scheduling.skills import ( + WithoutResourceSkills, + WithResourceSkills, ) from skdecide.builders.domain.scheduling.task_duration import ( - SimulatedTaskDuration, DeterministicTaskDuration, + SimulatedTaskDuration, UncertainUnivariateTaskDuration, ) from skdecide.builders.domain.scheduling.task_progress import ( CustomTaskProgress, DeterministicTaskProgress, ) -from skdecide.builders.domain.scheduling.skills import ( - WithResourceSkills, - WithoutResourceSkills, -) -from skdecide.builders.domain.scheduling.time_lag import WithTimeLag, WithoutTimeLag +from skdecide.builders.domain.scheduling.time_lag import WithoutTimeLag, WithTimeLag from skdecide.builders.domain.scheduling.time_windows import ( - WithTimeWindow, WithoutTimeWindow, + WithTimeWindow, ) -from skdecide.builders.domain.scheduling.preallocations import ( - WithPreallocations, - WithoutPreallocations, -) -from skdecide.builders.domain.scheduling.conditional_tasks import ( - WithConditionalTasks, - WithoutConditionalTasks, -) -from skdecide.builders.domain.scheduling.resource_availability import ( - UncertainResourceAvailabilityChanges, - WithoutResourceAvailabilityChange, - DeterministicResourceAvailabilityChanges, -) -from skdecide.builders.domain.scheduling.resource_costs import ( - WithResourceCosts, - WithoutResourceCosts, - WithModeCosts, - WithoutModeCosts, -) -from skdecide import T, EnumerableSpace, SamplableSpace -import random -from itertools import product - -from enum import Enum class SchedulingObjectiveEnum(Enum): diff --git a/skdecide/builders/domain/scheduling/scheduling_domains_modelling.py b/skdecide/builders/domain/scheduling/scheduling_domains_modelling.py index 750bf15e2f..0521fd10d7 100644 --- a/skdecide/builders/domain/scheduling/scheduling_domains_modelling.py +++ b/skdecide/builders/domain/scheduling/scheduling_domains_modelling.py @@ -6,7 +6,7 @@ from copy import deepcopy from enum import Enum -from typing import Set, Dict, List, Optional, Union +from typing import Dict, List, Optional, Set, Union from skdecide.builders.domain.scheduling.task import Task diff --git a/skdecide/builders/domain/scheduling/skills.py b/skdecide/builders/domain/scheduling/skills.py index e9b58fba5c..589d788a2f 100644 --- a/skdecide/builders/domain/scheduling/skills.py +++ b/skdecide/builders/domain/scheduling/skills.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Dict, Any, Set, List +from typing import Any, Dict, List, Set __all__ = ["WithResourceSkills", "WithoutResourceSkills"] diff --git a/skdecide/builders/domain/scheduling/task.py b/skdecide/builders/domain/scheduling/task.py index 23db3a4fc9..54ce5be9db 100644 --- a/skdecide/builders/domain/scheduling/task.py +++ b/skdecide/builders/domain/scheduling/task.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Dict, Optional +from typing import Dict, List, Optional # __all__ = ['Task', 'Status'] # diff --git a/skdecide/builders/domain/scheduling/task_duration.py b/skdecide/builders/domain/scheduling/task_duration.py index 23bd44fc4b..afd0a5f684 100644 --- a/skdecide/builders/domain/scheduling/task_duration.py +++ b/skdecide/builders/domain/scheduling/task_duration.py @@ -4,9 +4,9 @@ from __future__ import annotations -from typing import Optional, Dict -from skdecide.core import DiscreteDistribution, Distribution +from typing import Dict, Optional +from skdecide.core import DiscreteDistribution, Distribution __all__ = [ "SimulatedTaskDuration", diff --git a/skdecide/builders/domain/scheduling/task_progress.py b/skdecide/builders/domain/scheduling/task_progress.py index 42b9643307..a3f323ae65 100644 --- a/skdecide/builders/domain/scheduling/task_progress.py +++ b/skdecide/builders/domain/scheduling/task_progress.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Union, Dict, Optional +from typing import Dict, List, Optional, Union __all__ = ["CustomTaskProgress", "DeterministicTaskProgress"] diff --git a/skdecide/builders/solver/__init__.py b/skdecide/builders/solver/__init__.py index 7d09d644eb..50578be7e4 100644 --- a/skdecide/builders/solver/__init__.py +++ b/skdecide/builders/solver/__init__.py @@ -3,6 +3,6 @@ # LICENSE file in the root directory of this source tree. from skdecide.builders.solver.assessability import * +from skdecide.builders.solver.parallelability import * from skdecide.builders.solver.policy import * from skdecide.builders.solver.restorability import * -from skdecide.builders.solver.parallelability import * diff --git a/skdecide/builders/solver/parallelability.py b/skdecide/builders/solver/parallelability.py index 0a713d0dcb..04c39dec33 100644 --- a/skdecide/builders/solver/parallelability.py +++ b/skdecide/builders/solver/parallelability.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Callable +from typing import Callable, List from skdecide.domains import Domain, PipeParallelDomain, ShmParallelDomain diff --git a/skdecide/core.py b/skdecide/core.py index 81ac8a2b69..560a63522e 100644 --- a/skdecide/core.py +++ b/skdecide/core.py @@ -8,19 +8,19 @@ import inspect import random import re -from dataclasses import dataclass, asdict, astuple, replace +from dataclasses import asdict, astuple, dataclass, replace from typing import ( - TypeVar, + Callable, + Deque, + Dict, Generic, - Union, - Optional, Iterable, - Sequence, List, + Optional, + Sequence, Tuple, - Dict, - Deque, - Callable, + TypeVar, + Union, ) __all__ = [ diff --git a/skdecide/discrete_optimization/generic_tools/cp_tools.py b/skdecide/discrete_optimization/generic_tools/cp_tools.py index 5c087b226b..bbeb73614c 100644 --- a/skdecide/discrete_optimization/generic_tools/cp_tools.py +++ b/skdecide/discrete_optimization/generic_tools/cp_tools.py @@ -9,11 +9,12 @@ from __future__ import annotations from abc import abstractmethod +from enum import Enum + +from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) -from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO -from enum import Enum class CPSolverName(Enum): diff --git a/skdecide/discrete_optimization/generic_tools/do_mutation.py b/skdecide/discrete_optimization/generic_tools/do_mutation.py index 66e8fef16e..899b7f720b 100644 --- a/skdecide/discrete_optimization/generic_tools/do_mutation.py +++ b/skdecide/discrete_optimization/generic_tools/do_mutation.py @@ -4,9 +4,10 @@ from __future__ import annotations -from skdecide.discrete_optimization.generic_tools.do_problem import Solution, Problem from abc import abstractmethod -from typing import Tuple, Dict +from typing import Dict, Tuple + +from skdecide.discrete_optimization.generic_tools.do_problem import Problem, Solution class LocalMove: diff --git a/skdecide/discrete_optimization/generic_tools/do_problem.py b/skdecide/discrete_optimization/generic_tools/do_problem.py index 14873b5a27..cad56c7599 100644 --- a/skdecide/discrete_optimization/generic_tools/do_problem.py +++ b/skdecide/discrete_optimization/generic_tools/do_problem.py @@ -4,13 +4,15 @@ from __future__ import annotations -from enum import Enum from abc import abstractmethod -from typing import Dict, Any, List +from enum import Enum +from typing import Any, Dict, List + +import numpy as np + from skdecide.discrete_optimization.generic_tools.result_storage.multiobj_utils import ( TupleFitness, ) -import numpy as np class TypeAttribute(Enum): diff --git a/skdecide/discrete_optimization/generic_tools/do_solver.py b/skdecide/discrete_optimization/generic_tools/do_solver.py index c1f52fa1ee..8be2917743 100644 --- a/skdecide/discrete_optimization/generic_tools/do_solver.py +++ b/skdecide/discrete_optimization/generic_tools/do_solver.py @@ -5,6 +5,7 @@ from __future__ import annotations from abc import abstractmethod + from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) diff --git a/skdecide/discrete_optimization/generic_tools/ea/alternating_ga.py b/skdecide/discrete_optimization/generic_tools/ea/alternating_ga.py index 4e8da9a56d..ea8b201fdd 100644 --- a/skdecide/discrete_optimization/generic_tools/ea/alternating_ga.py +++ b/skdecide/discrete_optimization/generic_tools/ea/alternating_ga.py @@ -4,24 +4,23 @@ from __future__ import annotations -from skdecide.discrete_optimization.generic_tools.do_problem import ( - Problem, - ObjectiveHandling, -) -from typing import Union, Optional, Any, Dict, List +from typing import Any, Dict, List, Optional, Union + from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation -from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( - ResultStorage, -) from skdecide.discrete_optimization.generic_tools.do_problem import ( + ObjectiveHandling, + Problem, build_aggreg_function_and_params_objective, ) from skdecide.discrete_optimization.generic_tools.ea.ga import ( + DeapCrossover, DeapMutation, DeapSelection, - DeapCrossover, Ga, ) +from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( + ResultStorage, +) class AlternatingGa: diff --git a/skdecide/discrete_optimization/generic_tools/ea/ga.py b/skdecide/discrete_optimization/generic_tools/ea/ga.py index b1f404bde1..df1e37a5a3 100644 --- a/skdecide/discrete_optimization/generic_tools/ea/ga.py +++ b/skdecide/discrete_optimization/generic_tools/ea/ga.py @@ -4,27 +4,27 @@ from __future__ import annotations +import random +from enum import Enum +from typing import Any, Dict, List, Optional, Union + +import numpy as np +from deap import algorithms, base, creator, tools + +from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation from skdecide.discrete_optimization.generic_tools.do_problem import ( - Problem, EncodingRegister, - TypeAttribute, ObjectiveHandling, + Problem, + TypeAttribute, + build_aggreg_function_and_params_objective, ) -from deap import creator, base, tools, algorithms -import random -from typing import Union, Optional, Any, Dict, List -import numpy as np -from enum import Enum from skdecide.discrete_optimization.generic_tools.ea.deap_wrappers import ( generic_mutate_wrapper, ) -from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) -from skdecide.discrete_optimization.generic_tools.do_problem import ( - build_aggreg_function_and_params_objective, -) class DeapSelection(Enum): diff --git a/skdecide/discrete_optimization/generic_tools/ea/ga_tools.py b/skdecide/discrete_optimization/generic_tools/ea/ga_tools.py index 4a6f784d3c..1a567a543a 100644 --- a/skdecide/discrete_optimization/generic_tools/ea/ga_tools.py +++ b/skdecide/discrete_optimization/generic_tools/ea/ga_tools.py @@ -5,22 +5,24 @@ from __future__ import annotations import random -from typing import Union, Optional, Any, Dict, List -import numpy as np from enum import Enum +from typing import Any, Dict, List, Optional, Union + +import numpy as np + +from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation from skdecide.discrete_optimization.generic_tools.ea.deap_wrappers import ( generic_mutate_wrapper, ) -from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation -from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( - ResultStorage, -) from skdecide.discrete_optimization.generic_tools.ea.ga import ( DeapCrossover, DeapMutation, DeapSelection, ObjectiveHandling, ) +from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( + ResultStorage, +) class ParametersGa: diff --git a/skdecide/discrete_optimization/generic_tools/ea/nsga.py b/skdecide/discrete_optimization/generic_tools/ea/nsga.py index 0f38458390..a7b9c12675 100644 --- a/skdecide/discrete_optimization/generic_tools/ea/nsga.py +++ b/skdecide/discrete_optimization/generic_tools/ea/nsga.py @@ -4,23 +4,26 @@ from __future__ import annotations +import random +from typing import Any, Dict, List, Optional, Union + +import numpy as np +from deap import algorithms, base, creator, tools + +from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation from skdecide.discrete_optimization.generic_tools.do_problem import ( - Problem, EncodingRegister, - TypeAttribute, + ModeOptim, ObjectiveHandling, ParamsObjectiveFunction, - ModeOptim, + Problem, + TupleFitness, + TypeAttribute, build_evaluate_function_aggregated, ) -from deap import creator, base, tools, algorithms -import random -from typing import Union, Optional, Any, Dict, List -import numpy as np from skdecide.discrete_optimization.generic_tools.ea.deap_wrappers import ( generic_mutate_wrapper, ) -from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation from skdecide.discrete_optimization.generic_tools.ea.ga import ( DeapCrossover, DeapMutation, @@ -29,7 +32,6 @@ from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) -from skdecide.discrete_optimization.generic_tools.do_problem import TupleFitness class Nsga: diff --git a/skdecide/discrete_optimization/generic_tools/graph_api.py b/skdecide/discrete_optimization/generic_tools/graph_api.py index 9c13ad3a71..01654eb144 100644 --- a/skdecide/discrete_optimization/generic_tools/graph_api.py +++ b/skdecide/discrete_optimization/generic_tools/graph_api.py @@ -4,8 +4,9 @@ from __future__ import annotations +from typing import Any, Dict, Hashable, List, Tuple + import networkx as nx -from typing import Dict, List, Any, Tuple, Hashable class Graph: diff --git a/skdecide/discrete_optimization/generic_tools/lns_cp.py b/skdecide/discrete_optimization/generic_tools/lns_cp.py index 177229e198..980e29bc18 100644 --- a/skdecide/discrete_optimization/generic_tools/lns_cp.py +++ b/skdecide/discrete_optimization/generic_tools/lns_cp.py @@ -4,28 +4,29 @@ from __future__ import annotations +import time +from abc import abstractmethod +from datetime import timedelta +from typing import Any, Iterable, Optional + from skdecide.discrete_optimization.generic_tools.cp_tools import CPSolver, ParametersCP -from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO from skdecide.discrete_optimization.generic_tools.do_problem import ( - Solution, - Problem, - build_evaluate_function_aggregated, - ParamsObjectiveFunction, ModeOptim, + ParamsObjectiveFunction, + Problem, + Solution, build_aggreg_function_and_params_objective, + build_evaluate_function_aggregated, ) -from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( - ResultStorage, -) +from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO from skdecide.discrete_optimization.generic_tools.lns_mip import ( InitialSolution, PostProcessSolution, TrivialPostProcessSolution, ) -from abc import abstractmethod -from typing import Any, Iterable, Optional -from datetime import timedelta -import time +from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( + ResultStorage, +) class ConstraintHandler: diff --git a/skdecide/discrete_optimization/generic_tools/lns_mip.py b/skdecide/discrete_optimization/generic_tools/lns_mip.py index 088abe3569..3fccb90a58 100644 --- a/skdecide/discrete_optimization/generic_tools/lns_mip.py +++ b/skdecide/discrete_optimization/generic_tools/lns_mip.py @@ -4,23 +4,24 @@ from __future__ import annotations -from skdecide.discrete_optimization.generic_tools.lp_tools import ( - MilpSolver, - ParametersMilp, -) -from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO +import time +from abc import abstractmethod +from typing import Any, Iterable, Optional + from skdecide.discrete_optimization.generic_tools.do_problem import ( - Problem, - ParamsObjectiveFunction, ModeOptim, + ParamsObjectiveFunction, + Problem, build_aggreg_function_and_params_objective, ) +from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO +from skdecide.discrete_optimization.generic_tools.lp_tools import ( + MilpSolver, + ParametersMilp, +) from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) -from abc import abstractmethod -from typing import Any, Iterable, Optional -import time class ConstraintHandler: diff --git a/skdecide/discrete_optimization/generic_tools/lp_tools.py b/skdecide/discrete_optimization/generic_tools/lp_tools.py index 0367bec3e0..8f7ea4364c 100644 --- a/skdecide/discrete_optimization/generic_tools/lp_tools.py +++ b/skdecide/discrete_optimization/generic_tools/lp_tools.py @@ -5,12 +5,14 @@ from __future__ import annotations from abc import abstractmethod +from enum import Enum + +import mip + +from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) -from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO -from enum import Enum -import mip class MilpSolverName(Enum): diff --git a/skdecide/discrete_optimization/generic_tools/ls/hill_climber.py b/skdecide/discrete_optimization/generic_tools/ls/hill_climber.py index 38e9a9281e..79b9dfcbef 100644 --- a/skdecide/discrete_optimization/generic_tools/ls/hill_climber.py +++ b/skdecide/discrete_optimization/generic_tools/ls/hill_climber.py @@ -5,22 +5,23 @@ from __future__ import annotations import pickle + +from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation from skdecide.discrete_optimization.generic_tools.do_problem import ( - Solution, - Problem, - build_evaluate_function_aggregated, ModeOptim, ParamsObjectiveFunction, + Problem, + Solution, + build_evaluate_function_aggregated, ) from skdecide.discrete_optimization.generic_tools.ls.local_search import ( - RestartHandler, ModeMutation, + RestartHandler, ResultLS, ) -from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( - ResultStorage, ParetoFront, + ResultStorage, ) diff --git a/skdecide/discrete_optimization/generic_tools/ls/local_search.py b/skdecide/discrete_optimization/generic_tools/ls/local_search.py index 9742180829..9cbe454506 100644 --- a/skdecide/discrete_optimization/generic_tools/ls/local_search.py +++ b/skdecide/discrete_optimization/generic_tools/ls/local_search.py @@ -5,11 +5,12 @@ from __future__ import annotations from enum import Enum +from typing import Tuple + from skdecide.discrete_optimization.generic_tools.do_problem import Solution from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) -from typing import Tuple class ModeMutation(Enum): diff --git a/skdecide/discrete_optimization/generic_tools/ls/simulated_annealing.py b/skdecide/discrete_optimization/generic_tools/ls/simulated_annealing.py index 017814e371..e699618d67 100644 --- a/skdecide/discrete_optimization/generic_tools/ls/simulated_annealing.py +++ b/skdecide/discrete_optimization/generic_tools/ls/simulated_annealing.py @@ -5,25 +5,26 @@ from __future__ import annotations import math -import random import pickle +import random +from abc import abstractmethod + +from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation from skdecide.discrete_optimization.generic_tools.do_problem import ( + ModeOptim, + ParamsObjectiveFunction, Problem, Solution, build_evaluate_function_aggregated, - ModeOptim, - ParamsObjectiveFunction, ) from skdecide.discrete_optimization.generic_tools.ls.local_search import ( - RestartHandler, ModeMutation, + RestartHandler, ResultLS, ) -from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) -from abc import abstractmethod class TemperatureScheduling: diff --git a/skdecide/discrete_optimization/generic_tools/mip/pymip_tools.py b/skdecide/discrete_optimization/generic_tools/mip/pymip_tools.py index c9016e6eab..b30d98aeed 100644 --- a/skdecide/discrete_optimization/generic_tools/mip/pymip_tools.py +++ b/skdecide/discrete_optimization/generic_tools/mip/pymip_tools.py @@ -4,14 +4,15 @@ from __future__ import annotations -from typing import List, Tuple, Optional, Union -from mip import ( +import gc +from typing import List, Optional, Tuple, Union + +import mip +from mip import ( # , GRB, CBC, MINIMIZE, MAXIMIZE, BINARY, CONTINUOUS, INTEGER, xsum IncumbentUpdater, - Var, Model, -) # , GRB, CBC, MINIMIZE, MAXIMIZE, BINARY, CONTINUOUS, INTEGER, xsum -import mip -import gc + Var, +) def release_token(): diff --git a/skdecide/discrete_optimization/generic_tools/mutations/mixed_mutation.py b/skdecide/discrete_optimization/generic_tools/mutations/mixed_mutation.py index 82d92d8c1b..e83f31138f 100644 --- a/skdecide/discrete_optimization/generic_tools/mutations/mixed_mutation.py +++ b/skdecide/discrete_optimization/generic_tools/mutations/mixed_mutation.py @@ -3,11 +3,14 @@ # LICENSE file in the root directory of this source tree. from __future__ import annotations -from skdecide.discrete_optimization.generic_tools.do_problem import Solution -from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation -from typing import Union, List + +from typing import List, Union + import numpy as np +from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation +from skdecide.discrete_optimization.generic_tools.do_problem import Solution + class BasicPortfolioMutation(Mutation): def __init__( diff --git a/skdecide/discrete_optimization/generic_tools/mutations/mutation_bool.py b/skdecide/discrete_optimization/generic_tools/mutations/mutation_bool.py index 2c0f099254..165678d74b 100644 --- a/skdecide/discrete_optimization/generic_tools/mutations/mutation_bool.py +++ b/skdecide/discrete_optimization/generic_tools/mutations/mutation_bool.py @@ -3,17 +3,20 @@ # LICENSE file in the root directory of this source tree. from __future__ import annotations + +from typing import List + +import numpy as np + +from skdecide.discrete_optimization.generic_tools.do_mutation import LocalMove, Mutation from skdecide.discrete_optimization.generic_tools.do_problem import ( - Solution, Problem, + Solution, TypeAttribute, ) -from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation, LocalMove from skdecide.discrete_optimization.generic_tools.mutations.mutation_util import ( get_attribute_for_type, ) -from typing import List -import numpy as np class BitFlipMove(LocalMove): diff --git a/skdecide/discrete_optimization/generic_tools/mutations/mutation_catalog.py b/skdecide/discrete_optimization/generic_tools/mutations/mutation_catalog.py index fbdcb2f81b..2550705c0a 100644 --- a/skdecide/discrete_optimization/generic_tools/mutations/mutation_catalog.py +++ b/skdecide/discrete_optimization/generic_tools/mutations/mutation_catalog.py @@ -3,26 +3,27 @@ # LICENSE file in the root directory of this source tree. from __future__ import annotations + from skdecide.discrete_optimization.generic_tools.do_problem import ( - Solution, Problem, + Solution, TypeAttribute, ) +from skdecide.discrete_optimization.generic_tools.mutations.mutation_bool import ( + MutationBitFlip, +) +from skdecide.discrete_optimization.generic_tools.mutations.mutation_integer import ( + MutationIntegerSpecificArrity, +) from skdecide.discrete_optimization.generic_tools.mutations.permutation_mutations import ( - PermutationShuffleMutation, PermutationPartialShuffleMutation, + PermutationShuffleMutation, PermutationSwap, TwoOptMutation, ) -from skdecide.discrete_optimization.generic_tools.mutations.mutation_bool import ( - MutationBitFlip, -) from skdecide.discrete_optimization.rcpsp.mutations.mutation_rcpsp import ( PermutationMutationRCPSP, ) -from skdecide.discrete_optimization.generic_tools.mutations.mutation_integer import ( - MutationIntegerSpecificArrity, -) dictionnary_mutation = dict() dictionnary_mutation[TypeAttribute.PERMUTATION] = { diff --git a/skdecide/discrete_optimization/generic_tools/mutations/mutation_integer.py b/skdecide/discrete_optimization/generic_tools/mutations/mutation_integer.py index 2024d3d98d..e5d28ce486 100644 --- a/skdecide/discrete_optimization/generic_tools/mutations/mutation_integer.py +++ b/skdecide/discrete_optimization/generic_tools/mutations/mutation_integer.py @@ -3,15 +3,20 @@ # LICENSE file in the root directory of this source tree. from __future__ import annotations + +import random +from typing import Dict, List, Tuple + +from skdecide.discrete_optimization.generic_tools.do_mutation import ( + LocalMove, + LocalMoveDefault, + Mutation, +) from skdecide.discrete_optimization.generic_tools.do_problem import ( - Solution, Problem, + Solution, TypeAttribute, ) -from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation, LocalMove -from typing import Tuple, List, Dict -from skdecide.discrete_optimization.generic_tools.do_mutation import LocalMoveDefault -import random class MutationIntegerSpecificArrity(Mutation): diff --git a/skdecide/discrete_optimization/generic_tools/mutations/mutation_util.py b/skdecide/discrete_optimization/generic_tools/mutations/mutation_util.py index 3fb10c7b38..9c28b39df9 100644 --- a/skdecide/discrete_optimization/generic_tools/mutations/mutation_util.py +++ b/skdecide/discrete_optimization/generic_tools/mutations/mutation_util.py @@ -3,6 +3,7 @@ # LICENSE file in the root directory of this source tree. from __future__ import annotations + from skdecide.discrete_optimization.generic_tools.do_problem import ( Problem, TypeAttribute, diff --git a/skdecide/discrete_optimization/generic_tools/mutations/permutation_mutations.py b/skdecide/discrete_optimization/generic_tools/mutations/permutation_mutations.py index b6b6fbcd9d..7d8fafd42a 100644 --- a/skdecide/discrete_optimization/generic_tools/mutations/permutation_mutations.py +++ b/skdecide/discrete_optimization/generic_tools/mutations/permutation_mutations.py @@ -3,17 +3,20 @@ # LICENSE file in the root directory of this source tree. from __future__ import annotations + +import random +from copy import deepcopy +from typing import Dict, List, Tuple, Union + +import numpy as np + +from skdecide.discrete_optimization.generic_tools.do_mutation import LocalMove, Mutation from skdecide.discrete_optimization.generic_tools.do_problem import ( - Solution, - Problem, EncodingRegister, + Problem, + Solution, TypeAttribute, ) -from skdecide.discrete_optimization.generic_tools.do_mutation import Mutation, LocalMove -from typing import Tuple, Union, List, Dict -import numpy as np -from copy import deepcopy -import random class ShuffleMove(LocalMove): diff --git a/skdecide/discrete_optimization/generic_tools/policy_sk.py b/skdecide/discrete_optimization/generic_tools/policy_sk.py index ac6145f73a..463e9aa7d3 100644 --- a/skdecide/discrete_optimization/generic_tools/policy_sk.py +++ b/skdecide/discrete_optimization/generic_tools/policy_sk.py @@ -4,21 +4,22 @@ from __future__ import annotations -from skdecide.builders.solver.policy import DeterministicPolicies +from typing import Dict + from skdecide import Domain +from skdecide.builders.solver.policy import DeterministicPolicies from skdecide.domains import ( - SingleAgent, - Sequential, - EnumerableTransitions, Actions, + DeterministicInitialized, + EnumerableTransitions, + FullyObservable, + GoalMDPDomain, Goals, Markovian, - FullyObservable, PositiveCosts, - GoalMDPDomain, - DeterministicInitialized, + Sequential, + SingleAgent, ) -from typing import Dict class D( diff --git a/skdecide/discrete_optimization/generic_tools/result_storage/multiobj_utils.py b/skdecide/discrete_optimization/generic_tools/result_storage/multiobj_utils.py index 0635ff3db7..381587fb5c 100644 --- a/skdecide/discrete_optimization/generic_tools/result_storage/multiobj_utils.py +++ b/skdecide/discrete_optimization/generic_tools/result_storage/multiobj_utils.py @@ -4,7 +4,8 @@ from __future__ import annotations -from typing import Tuple, List, Any +from typing import Any, List, Tuple + import numpy as np diff --git a/skdecide/discrete_optimization/generic_tools/result_storage/result_storage.py b/skdecide/discrete_optimization/generic_tools/result_storage/result_storage.py index 1af841530e..a7f7d7bf79 100644 --- a/skdecide/discrete_optimization/generic_tools/result_storage/result_storage.py +++ b/skdecide/discrete_optimization/generic_tools/result_storage/result_storage.py @@ -4,15 +4,16 @@ from __future__ import annotations +import random +from heapq import heapify, heappush, heappushpop, nlargest, nsmallest +from typing import Dict, List, Optional, Tuple, Union + from skdecide.discrete_optimization.generic_tools.do_problem import ( + ModeOptim, Problem, Solution, TupleFitness, - ModeOptim, ) -from typing import List, Tuple, Dict, Union, Optional -from heapq import heappushpop, heappush, heapify, nlargest, nsmallest -import random fitness_class = Union[float, TupleFitness] diff --git a/skdecide/discrete_optimization/generic_tools/result_storage/resultcomparator.py b/skdecide/discrete_optimization/generic_tools/result_storage/resultcomparator.py index 38d0c83fc8..447e3b987d 100644 --- a/skdecide/discrete_optimization/generic_tools/result_storage/resultcomparator.py +++ b/skdecide/discrete_optimization/generic_tools/result_storage/resultcomparator.py @@ -4,12 +4,13 @@ from __future__ import annotations +from typing import List + +from skdecide.discrete_optimization.generic_tools.do_problem import Problem from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, result_storage_to_pareto_front, ) -from typing import List -from skdecide.discrete_optimization.generic_tools.do_problem import Problem class ResultComparator: diff --git a/skdecide/discrete_optimization/generic_tools/robustness/robustness_tool.py b/skdecide/discrete_optimization/generic_tools/robustness/robustness_tool.py index 0567637586..bf41837c3b 100644 --- a/skdecide/discrete_optimization/generic_tools/robustness/robustness_tool.py +++ b/skdecide/discrete_optimization/generic_tools/robustness/robustness_tool.py @@ -4,28 +4,29 @@ from __future__ import annotations +import random +from typing import List + +import numpy as np + from skdecide.discrete_optimization.generic_tools.do_problem import ( - MethodAggregating, BaseMethodAggregating, - ParamsObjectiveFunction, - ObjectiveHandling, + MethodAggregating, ModeOptim, + ObjectiveHandling, + ParamsObjectiveFunction, build_aggreg_function_and_params_objective, ) -from typing import List -import numpy as np -import random - from skdecide.discrete_optimization.generic_tools.ls.hill_climber import ( HillClimberPareto, ) from skdecide.discrete_optimization.generic_tools.ls.local_search import ( - RestartHandlerLimit, ModeMutation, + RestartHandlerLimit, ) from skdecide.discrete_optimization.generic_tools.ls.simulated_annealing import ( - TemperatureSchedulingFactor, SimulatedAnnealing, + TemperatureSchedulingFactor, ) from skdecide.discrete_optimization.generic_tools.mutations.mixed_mutation import ( BasicPortfolioMutation, @@ -37,9 +38,9 @@ PermutationMutationRCPSP, ) from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPSolution, Aggreg_RCPSPModel, RCPSPModel, + RCPSPSolution, ) diff --git a/skdecide/discrete_optimization/rcpsp/mutations/mutation_rcpsp.py b/skdecide/discrete_optimization/rcpsp/mutations/mutation_rcpsp.py index 04aea9f719..b0c277fd47 100644 --- a/skdecide/discrete_optimization/rcpsp/mutations/mutation_rcpsp.py +++ b/skdecide/discrete_optimization/rcpsp/mutations/mutation_rcpsp.py @@ -4,14 +4,15 @@ from __future__ import annotations +from typing import Dict, Tuple + from skdecide.discrete_optimization.generic_tools.do_mutation import LocalMove from skdecide.discrete_optimization.generic_tools.mutations.permutation_mutations import ( - PermutationShuffleMutation, Mutation, + PermutationShuffleMutation, Problem, Solution, ) -from typing import Tuple, Dict from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPSolution diff --git a/skdecide/discrete_optimization/rcpsp/parser/rcpsp_parser.py b/skdecide/discrete_optimization/rcpsp/parser/rcpsp_parser.py index 93537f91be..390f39634b 100644 --- a/skdecide/discrete_optimization/rcpsp/parser/rcpsp_parser.py +++ b/skdecide/discrete_optimization/rcpsp/parser/rcpsp_parser.py @@ -4,13 +4,14 @@ from __future__ import annotations -import os, sys +import os +import sys + from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( + MultiModeRCPSPModel, RCPSPModel, SingleModeRCPSPModel, - MultiModeRCPSPModel, ) -import os def parse_psplib(input_data): diff --git a/skdecide/discrete_optimization/rcpsp/rcpsp_data_generator.py b/skdecide/discrete_optimization/rcpsp/rcpsp_data_generator.py index 6b4c6602a3..b97cc66d3d 100644 --- a/skdecide/discrete_optimization/rcpsp/rcpsp_data_generator.py +++ b/skdecide/discrete_optimization/rcpsp/rcpsp_data_generator.py @@ -4,15 +4,17 @@ from __future__ import annotations +import random + +import numpy as np + from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPModel, + MRCPSP_H_Model, + MultiModeRCPSPModel, RCPSP_H_Model, + RCPSPModel, SingleModeRCPSPModel, - MultiModeRCPSPModel, - MRCPSP_H_Model, ) -import numpy as np -import random def generate_rcpsp_with_helper_tasks_data( diff --git a/skdecide/discrete_optimization/rcpsp/rcpsp_model.py b/skdecide/discrete_optimization/rcpsp/rcpsp_model.py index a8b1550ef7..3b2ba12c15 100644 --- a/skdecide/discrete_optimization/rcpsp/rcpsp_model.py +++ b/skdecide/discrete_optimization/rcpsp/rcpsp_model.py @@ -3,27 +3,30 @@ # LICENSE file in the root directory of this source tree. from __future__ import annotations + +from abc import abstractmethod +from collections import defaultdict +from copy import deepcopy +from enum import Enum +from typing import Dict, List, Tuple, Union + +import numpy as np +from scipy.stats import poisson, randint, rv_discrete + from skdecide.discrete_optimization.generic_tools.do_problem import ( - Solution, - Problem, EncodingRegister, - TypeAttribute, - ObjectiveRegister, - TypeObjective, - ObjectiveHandling, - TupleFitness, - RobustProblem, MethodAggregating, ModeOptim, + ObjectiveHandling, + ObjectiveRegister, + Problem, + RobustProblem, + Solution, + TupleFitness, + TypeAttribute, + TypeObjective, ) from skdecide.discrete_optimization.generic_tools.graph_api import Graph -from typing import List, Union, Tuple, Dict -from abc import abstractmethod -import numpy as np -from enum import Enum -from copy import deepcopy -from scipy.stats import poisson, rv_discrete, randint -from collections import defaultdict def tree(): diff --git a/skdecide/discrete_optimization/rcpsp/rcpsp_plot_utils.py b/skdecide/discrete_optimization/rcpsp/rcpsp_plot_utils.py index 077b1ddd1a..cc4e102e62 100644 --- a/skdecide/discrete_optimization/rcpsp/rcpsp_plot_utils.py +++ b/skdecide/discrete_optimization/rcpsp/rcpsp_plot_utils.py @@ -1,3 +1,4 @@ +from collections import namedtuple from copy import deepcopy from typing import List, Union @@ -6,17 +7,16 @@ from matplotlib import pyplot as plt from matplotlib.collections import PatchCollection from matplotlib.patches import Polygon as pp + from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( RCPSPModel, - RCPSPSolution, RCPSPModelCalendar, + RCPSPSolution, ) from skdecide.discrete_optimization.rcpsp.rcpsp_utils import ( compute_nice_resource_consumption, compute_schedule_per_resource_individual, ) -from collections import namedtuple - Rectangle = namedtuple("Rectangle", "xmin ymin xmax ymax") diff --git a/skdecide/discrete_optimization/rcpsp/rcpsp_solvers.py b/skdecide/discrete_optimization/rcpsp/rcpsp_solvers.py index fad91f6392..a071a84a91 100644 --- a/skdecide/discrete_optimization/rcpsp/rcpsp_solvers.py +++ b/skdecide/discrete_optimization/rcpsp/rcpsp_solvers.py @@ -4,55 +4,53 @@ from __future__ import annotations +from skdecide.discrete_optimization.generic_tools.cp_tools import ParametersCP +from skdecide.discrete_optimization.generic_tools.ea.ga_tools import ( + ParametersAltGa, + ParametersGa, +) +from skdecide.discrete_optimization.generic_tools.lp_tools import ParametersMilp from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) - -from skdecide.discrete_optimization.rcpsp.solver.cp_solvers import ( - CP_RCPSP_MZN, - CP_MRCPSP_MZN, - CPSolverName, -) -from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_solver import ( - LP_RCPSP, - LP_MRCPSP, - LP_RCPSP_Solver, -) -from skdecide.discrete_optimization.rcpsp.solver.rcpsp_pile import ( - PileSolverRCPSP, - PileSolverRCPSP_Calendar, - GreedyChoice, -) -from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_lns_solver import ( - LNS_LP_RCPSP_SOLVER, -) -from skdecide.discrete_optimization.rcpsp.solver.rcpsp_cp_lns_solver import ( - LNS_CP_RCPSP_SOLVER, -) -from skdecide.discrete_optimization.rcpsp.solver.ls_solver import ( - LS_SOLVER, - LS_RCPSP_Solver, -) from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPModel, MultiModeRCPSPModel, + RCPSPModel, RCPSPModelCalendar, SingleModeRCPSPModel, ) from skdecide.discrete_optimization.rcpsp.solver.calendar_solver_iterative import ( SolverWithCalendarIterative, ) -from skdecide.discrete_optimization.generic_tools.lp_tools import ParametersMilp -from skdecide.discrete_optimization.generic_tools.cp_tools import ParametersCP -from skdecide.discrete_optimization.generic_tools.ea.ga_tools import ( - ParametersGa, - ParametersAltGa, +from skdecide.discrete_optimization.rcpsp.solver.cp_solvers import ( + CP_MRCPSP_MZN, + CP_RCPSP_MZN, + CPSolverName, +) +from skdecide.discrete_optimization.rcpsp.solver.ls_solver import ( + LS_SOLVER, + LS_RCPSP_Solver, +) +from skdecide.discrete_optimization.rcpsp.solver.rcpsp_cp_lns_solver import ( + LNS_CP_RCPSP_SOLVER, ) from skdecide.discrete_optimization.rcpsp.solver.rcpsp_ga_solver import ( - GA_RCPSP_Solver, GA_MRCPSP_Solver, + GA_RCPSP_Solver, +) +from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_lns_solver import ( + LNS_LP_RCPSP_SOLVER, +) +from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_solver import ( + LP_MRCPSP, + LP_RCPSP, + LP_RCPSP_Solver, +) +from skdecide.discrete_optimization.rcpsp.solver.rcpsp_pile import ( + GreedyChoice, + PileSolverRCPSP, + PileSolverRCPSP_Calendar, ) - solvers = { "lp": [ diff --git a/skdecide/discrete_optimization/rcpsp/rcpsp_utils.py b/skdecide/discrete_optimization/rcpsp/rcpsp_utils.py index df46588142..a10544ea1c 100644 --- a/skdecide/discrete_optimization/rcpsp/rcpsp_utils.py +++ b/skdecide/discrete_optimization/rcpsp/rcpsp_utils.py @@ -4,15 +4,17 @@ from __future__ import annotations +from copy import deepcopy +from typing import List, Union + +import numpy as np +import scipy.stats + from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPSolution, RCPSPModel, RCPSPModelCalendar, + RCPSPSolution, ) -from typing import List, Union -from copy import deepcopy -import numpy as np -import scipy.stats def compute_resource_consumption( diff --git a/skdecide/discrete_optimization/rcpsp/solver/__init__.py b/skdecide/discrete_optimization/rcpsp/solver/__init__.py index 688111684c..a43aa05d55 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/__init__.py +++ b/skdecide/discrete_optimization/rcpsp/solver/__init__.py @@ -2,6 +2,6 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -from .cp_solvers import CP_RCPSP_MZN, CP_MRCPSP_MZN -from .rcpsp_lp_solver import LP_RCPSP_Solver, LP_RCPSP, LP_MRCPSP +from .cp_solvers import CP_MRCPSP_MZN, CP_RCPSP_MZN +from .rcpsp_lp_solver import LP_MRCPSP, LP_RCPSP, LP_RCPSP_Solver from .rcpsp_pile import PileSolverRCPSP, PileSolverRCPSP_Calendar diff --git a/skdecide/discrete_optimization/rcpsp/solver/calendar_solver_iterative.py b/skdecide/discrete_optimization/rcpsp/solver/calendar_solver_iterative.py index d9bc335efa..127a854805 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/calendar_solver_iterative.py +++ b/skdecide/discrete_optimization/rcpsp/solver/calendar_solver_iterative.py @@ -5,46 +5,45 @@ from __future__ import annotations import random -from typing import Iterable, Any, Union, Optional - -from skdecide.discrete_optimization.generic_tools.lns_mip import PostProcessSolution -from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_lns_solver import ( - InitialSolutionRCPSP, - InitialMethodRCPSP, -) +import time +from datetime import timedelta +from typing import Any, Iterable, Optional, Union -from skdecide.discrete_optimization.rcpsp.solver.rcpsp_cp_lns_solver import ( - ConstraintHandlerStartTimeInterval_CP, - build_neighbor_operator, - OptionNeighbor, -) +import numpy as np +from minizinc import Status from skdecide.discrete_optimization.generic_tools.cp_tools import ( - ParametersCP, CPSolverName, + ParametersCP, ) -from skdecide.discrete_optimization.rcpsp.solver import CP_MRCPSP_MZN, CP_RCPSP_MZN from skdecide.discrete_optimization.generic_tools.do_problem import ( - get_default_objective_setup, ModeOptim, -) -from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( - ResultStorage, + get_default_objective_setup, ) from skdecide.discrete_optimization.generic_tools.lns_cp import ( ConstraintHandler, SolverDO, ) +from skdecide.discrete_optimization.generic_tools.lns_mip import PostProcessSolution +from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( + ResultStorage, +) from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( + PartialSolution, RCPSPModel, - RCPSPSolution, RCPSPModelCalendar, - PartialSolution, + RCPSPSolution, +) +from skdecide.discrete_optimization.rcpsp.solver import CP_MRCPSP_MZN, CP_RCPSP_MZN +from skdecide.discrete_optimization.rcpsp.solver.rcpsp_cp_lns_solver import ( + ConstraintHandlerStartTimeInterval_CP, + OptionNeighbor, + build_neighbor_operator, +) +from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_lns_solver import ( + InitialMethodRCPSP, + InitialSolutionRCPSP, ) -import numpy as np -import time -from datetime import timedelta -from minizinc import Status def get_ressource_breaks( diff --git a/skdecide/discrete_optimization/rcpsp/solver/cp_solvers.py b/skdecide/discrete_optimization/rcpsp/solver/cp_solvers.py index 9b511bba06..eb4fa68232 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/cp_solvers.py +++ b/skdecide/discrete_optimization/rcpsp/solver/cp_solvers.py @@ -4,12 +4,18 @@ from __future__ import annotations +import json +import os from dataclasses import InitVar -from typing import Union, List +from datetime import timedelta +from typing import List, Union + +from minizinc import Instance, Model, Solver + from skdecide.discrete_optimization.generic_tools.cp_tools import ( CPSolver, - ParametersCP, CPSolverName, + ParametersCP, map_cp_solver_name, ) from skdecide.discrete_optimization.generic_tools.do_problem import ( @@ -20,15 +26,11 @@ ResultStorage, ) from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( + PartialSolution, RCPSPModel, - RCPSPSolution, RCPSPModelCalendar, - PartialSolution, + RCPSPSolution, ) -from minizinc import Instance, Model, Solver -import json -from datetime import timedelta -import os this_path = os.path.dirname(os.path.abspath(__file__)) diff --git a/skdecide/discrete_optimization/rcpsp/solver/cpm.py b/skdecide/discrete_optimization/rcpsp/solver/cpm.py index 41dc817bd8..db1a68529c 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/cpm.py +++ b/skdecide/discrete_optimization/rcpsp/solver/cpm.py @@ -4,7 +4,11 @@ from __future__ import annotations -from typing import Dict, Any, List +from heapq import heappop, heappush +from typing import Any, Dict, List + +import networkx as nx +import numpy as np from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( @@ -12,9 +16,6 @@ RCPSPModelCalendar, compute_graph_rcpsp, ) -import networkx as nx -from heapq import heappop, heappush -import numpy as np class CPMObject: diff --git a/skdecide/discrete_optimization/rcpsp/solver/ls_solver.py b/skdecide/discrete_optimization/rcpsp/solver/ls_solver.py index afb9e45538..28a58eaf81 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/ls_solver.py +++ b/skdecide/discrete_optimization/rcpsp/solver/ls_solver.py @@ -4,45 +4,38 @@ from __future__ import annotations +from enum import Enum from typing import Union -from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_lns_solver import ( - InitialMethodRCPSP, -) - -from skdecide.discrete_optimization.generic_tools.ls.hill_climber import HillClimber +import numpy as np -from skdecide.discrete_optimization.generic_tools.ls.simulated_annealing import ( - TemperatureSchedulingFactor, - SimulatedAnnealing, +from skdecide.discrete_optimization.generic_tools.do_problem import ( + ParamsObjectiveFunction, + build_aggreg_function_and_params_objective, ) - +from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO +from skdecide.discrete_optimization.generic_tools.ls.hill_climber import HillClimber from skdecide.discrete_optimization.generic_tools.ls.local_search import ( - RestartHandlerLimit, ModeMutation, + RestartHandlerLimit, +) +from skdecide.discrete_optimization.generic_tools.ls.simulated_annealing import ( + SimulatedAnnealing, + TemperatureSchedulingFactor, ) - from skdecide.discrete_optimization.generic_tools.mutations.mixed_mutation import ( BasicPortfolioMutation, ) - -from skdecide.discrete_optimization.rcpsp.mutations.mutation_rcpsp import ( - PermutationMutationRCPSP, -) - -from skdecide.discrete_optimization.generic_tools.do_problem import ( - ParamsObjectiveFunction, - build_aggreg_function_and_params_objective, -) from skdecide.discrete_optimization.generic_tools.mutations.mutation_catalog import ( get_available_mutations, ) - -from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO +from skdecide.discrete_optimization.rcpsp.mutations.mutation_rcpsp import ( + PermutationMutationRCPSP, +) from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPModel -import numpy as np -from enum import Enum - +from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_lns_solver import ( + InitialMethodRCPSP, +) from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( MS_RCPSPModel, ) diff --git a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_cp_lns_solver.py b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_cp_lns_solver.py index 61ea26359e..aefe957553 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_cp_lns_solver.py +++ b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_cp_lns_solver.py @@ -4,39 +4,37 @@ from __future__ import annotations -from typing import Iterable, Any, Union, List - -from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_lns_solver import ( - InitialSolutionRCPSP, - InitialMethodRCPSP, -) +import random +from enum import Enum +from typing import Any, Iterable, List, Union -from skdecide.discrete_optimization.generic_tools.do_problem import ( - get_default_objective_setup, -) +import numpy as np from skdecide.discrete_optimization.generic_tools.cp_tools import ( CPSolverName, ParametersCP, ) - +from skdecide.discrete_optimization.generic_tools.do_problem import ( + get_default_objective_setup, +) +from skdecide.discrete_optimization.generic_tools.lns_cp import ( + LNS_CP, + ConstraintHandler, + SolverDO, +) from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) +from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPModel from skdecide.discrete_optimization.rcpsp.solver.cp_solvers import ( - CP_RCPSP_MZN, CP_MRCPSP_MZN, + CP_RCPSP_MZN, CPSolver, ) -from skdecide.discrete_optimization.generic_tools.lns_cp import ( - ConstraintHandler, - SolverDO, - LNS_CP, +from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_lns_solver import ( + InitialMethodRCPSP, + InitialSolutionRCPSP, ) -from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPModel -import random -from enum import Enum -import numpy as np class ConstraintHandlerStartTimeInterval_CP(ConstraintHandler): diff --git a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_ga_solver.py b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_ga_solver.py index 4421285d7a..34a90edca1 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_ga_solver.py +++ b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_ga_solver.py @@ -4,21 +4,21 @@ from __future__ import annotations -from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO from skdecide.discrete_optimization.generic_tools.do_problem import ( ParamsObjectiveFunction, build_aggreg_function_and_params_objective, ) -from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPModel, - MultiModeRCPSPModel, -) +from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO +from skdecide.discrete_optimization.generic_tools.ea.alternating_ga import AlternatingGa +from skdecide.discrete_optimization.generic_tools.ea.ga import Ga from skdecide.discrete_optimization.generic_tools.ea.ga_tools import ( - ParametersGa, ParametersAltGa, + ParametersGa, +) +from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( + MultiModeRCPSPModel, + RCPSPModel, ) -from skdecide.discrete_optimization.generic_tools.ea.ga import Ga -from skdecide.discrete_optimization.generic_tools.ea.alternating_ga import AlternatingGa class GA_RCPSP_Solver(SolverDO): diff --git a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_lns_solver.py b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_lns_solver.py index 2ce9ce8aed..870f0079ab 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_lns_solver.py +++ b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_lns_solver.py @@ -4,17 +4,28 @@ from __future__ import annotations -from typing import Iterable, Any, Union +import random +from enum import Enum +from typing import Any, Iterable, Union + +import numpy as np + from skdecide.discrete_optimization.generic_tools.cp_tools import ParametersCP -from skdecide.discrete_optimization.rcpsp.solver import CP_MRCPSP_MZN from skdecide.discrete_optimization.generic_tools.do_problem import ( ParamsObjectiveFunction, - get_default_objective_setup, build_evaluate_function_aggregated, + get_default_objective_setup, +) +from skdecide.discrete_optimization.generic_tools.lns_mip import ( + LNS_MILP, + ConstraintHandler, + InitialSolution, + SolverDO, ) +from skdecide.discrete_optimization.generic_tools.lp_tools import ParametersMilp from skdecide.discrete_optimization.generic_tools.ls.local_search import ( - RestartHandlerLimit, ModeMutation, + RestartHandlerLimit, ) from skdecide.discrete_optimization.generic_tools.ls.simulated_annealing import ( SimulatedAnnealing, @@ -32,26 +43,17 @@ from skdecide.discrete_optimization.rcpsp.mutations.mutation_rcpsp import ( PermutationMutationRCPSP, ) +from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPModel +from skdecide.discrete_optimization.rcpsp.solver import CP_MRCPSP_MZN from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_solver import ( - LP_RCPSP_Solver, - LP_RCPSP, LP_MRCPSP, LP_MRCPSP_GUROBI, + LP_RCPSP, + LP_RCPSP_Solver, ) -from skdecide.discrete_optimization.generic_tools.lp_tools import ParametersMilp -from skdecide.discrete_optimization.generic_tools.lns_mip import ( - LNS_MILP, - ConstraintHandler, - InitialSolution, - SolverDO, -) -from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPModel -from enum import Enum -import random -import numpy as np from skdecide.discrete_optimization.rcpsp.solver.rcpsp_pile import ( - PileSolverRCPSP, GreedyChoice, + PileSolverRCPSP, PileSolverRCPSP_Calendar, ) diff --git a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_solver.py b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_solver.py index 4a48b989d1..8911022daa 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_solver.py +++ b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_solver.py @@ -4,10 +4,11 @@ from __future__ import annotations +from enum import Enum from itertools import product -from typing import List, Dict, Union +from typing import Dict, List, Union -from mip import Model, xsum, BINARY, MINIMIZE, CBC, GRB, Var, INTEGER +from mip import BINARY, CBC, GRB, INTEGER, MINIMIZE, Model, Var, xsum from skdecide.discrete_optimization.generic_tools.do_problem import ( ParamsObjectiveFunction, @@ -21,18 +22,17 @@ ResultStorage, ) from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPSolution, - SingleModeRCPSPModel, MultiModeRCPSPModel, - RCPSPModelCalendar, PartialSolution, + RCPSPModelCalendar, + RCPSPSolution, + SingleModeRCPSPModel, ) from skdecide.discrete_optimization.rcpsp.solver.rcpsp_pile import ( - PileSolverRCPSP, GreedyChoice, + PileSolverRCPSP, PileSolverRCPSP_Calendar, ) -from enum import Enum try: import gurobi diff --git a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_solver_gantt.py b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_solver_gantt.py index d34c2bf70f..9f05c88809 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_solver_gantt.py +++ b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_lp_solver_gantt.py @@ -4,23 +4,25 @@ from __future__ import annotations -from typing import List, Dict, Union, Tuple, Set -from mip import Model, xsum, BINARY, MINIMIZE -from skdecide.discrete_optimization.generic_tools.lp_tools import map_solver +import random +from typing import Dict, List, Set, Tuple, Union + +import networkx as nx +from mip import BINARY, MINIMIZE, Model, xsum + from skdecide.discrete_optimization.generic_tools.lp_tools import ( - ParametersMilp, - MilpSolverName, MilpSolver, + MilpSolverName, + ParametersMilp, + map_solver, ) from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPSolution, RCPSPModelCalendar, + RCPSPSolution, ) -import random -import networkx as nx try: import gurobi diff --git a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_pile.py b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_pile.py index e496a5ab5b..36173516b6 100644 --- a/skdecide/discrete_optimization/rcpsp/solver/rcpsp_pile.py +++ b/skdecide/discrete_optimization/rcpsp/solver/rcpsp_pile.py @@ -4,32 +4,34 @@ from __future__ import annotations -from skdecide.discrete_optimization.rcpsp.solver.cp_solvers import CP_MRCPSP_MZN_MODES +import random +from enum import Enum +from heapq import heappop, heappush +from typing import Dict, List + +import networkx as nx +import numpy as np + from skdecide.discrete_optimization.generic_tools.cp_tools import ( - ParametersCP, CPSolverName, + ParametersCP, ) from skdecide.discrete_optimization.generic_tools.do_problem import ( ParamsObjectiveFunction, build_aggreg_function_and_params_objective, ) -from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPModel, - MultiModeRCPSPModel, - RCPSPSolution, - RCPSPModelCalendar, - PartialSolution, -) from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) -import networkx as nx -from typing import List, Dict -from heapq import heappush, heappop -from enum import Enum -import numpy as np -import random +from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( + MultiModeRCPSPModel, + PartialSolution, + RCPSPModel, + RCPSPModelCalendar, + RCPSPSolution, +) +from skdecide.discrete_optimization.rcpsp.solver.cp_solvers import CP_MRCPSP_MZN_MODES class GreedyChoice(Enum): diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/ms_rcpsp_plot_utils.py b/skdecide/discrete_optimization/rcpsp_multiskill/ms_rcpsp_plot_utils.py index f89c685a6d..7ac0bd60d9 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/ms_rcpsp_plot_utils.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/ms_rcpsp_plot_utils.py @@ -4,16 +4,16 @@ from __future__ import annotations +import matplotlib.pyplot as plt +import numpy as np +from matplotlib.collections import PatchCollection from matplotlib.font_manager import FontProperties +from matplotlib.patches import Polygon as pp from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( MS_RCPSPModel, MS_RCPSPSolution, ) -import matplotlib.pyplot as plt -import numpy as np -from matplotlib.patches import Polygon as pp -from matplotlib.collections import PatchCollection def compute_schedule_per_resource_individual( diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/parser/rcpsp_multiskill_parser.py b/skdecide/discrete_optimization/rcpsp_multiskill/parser/rcpsp_multiskill_parser.py index cbe3a050b7..d2d1623895 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/parser/rcpsp_multiskill_parser.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/parser/rcpsp_multiskill_parser.py @@ -4,11 +4,11 @@ from __future__ import annotations -from typing import Tuple, Dict +from typing import Dict, Tuple from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( - MS_RCPSPModel, Employee, + MS_RCPSPModel, SkillDetail, ) diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/rcpsp_multiskill.py b/skdecide/discrete_optimization/rcpsp_multiskill/rcpsp_multiskill.py index 2c27480048..6da4fb0d1a 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/rcpsp_multiskill.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/rcpsp_multiskill.py @@ -3,25 +3,28 @@ # LICENSE file in the root directory of this source tree. from __future__ import annotations + +from abc import abstractmethod +from collections import defaultdict +from copy import deepcopy +from enum import Enum +from typing import Dict, List, Optional, Set + +import numpy as np +import scipy.stats as ss + from skdecide.discrete_optimization.generic_tools.do_problem import ( - Solution, - Problem, EncodingRegister, - TypeAttribute, - ObjectiveRegister, - TypeObjective, + ModeOptim, ObjectiveHandling, + ObjectiveRegister, + Problem, + Solution, TupleFitness, - ModeOptim, + TypeAttribute, + TypeObjective, ) from skdecide.discrete_optimization.generic_tools.graph_api import Graph -from typing import List, Dict, Set, Optional -from abc import abstractmethod -import numpy as np -import scipy.stats as ss -from enum import Enum -from copy import deepcopy -from collections import defaultdict def tree(): diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/rcpsp_multiskill_solvers.py b/skdecide/discrete_optimization/rcpsp_multiskill/rcpsp_multiskill_solvers.py index d8b4cdcfe4..daf63d20b0 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/rcpsp_multiskill_solvers.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/rcpsp_multiskill_solvers.py @@ -4,22 +4,27 @@ from __future__ import annotations +from skdecide.discrete_optimization.generic_tools.cp_tools import ParametersCP +from skdecide.discrete_optimization.generic_tools.ea.ga_tools import ParametersAltGa +from skdecide.discrete_optimization.generic_tools.lp_tools import ParametersMilp +from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( + ResultStorage, +) +from skdecide.discrete_optimization.rcpsp.solver.cp_solvers import CPSolverName from skdecide.discrete_optimization.rcpsp.solver.ls_solver import ( - LS_RCPSP_Solver, LS_SOLVER, + LS_RCPSP_Solver, +) +from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( + MS_RCPSPModel, + MS_RCPSPModel_Variant, +) +from skdecide.discrete_optimization.rcpsp_multiskill.solvers.calendar_solver_iterative import ( + SolverWithCalendarIterative, ) from skdecide.discrete_optimization.rcpsp_multiskill.solvers.cp_solvers import ( CP_MS_MRCPSP_MZN, ) - -from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( - ResultStorage, -) - -from skdecide.discrete_optimization.rcpsp.solver.cp_solvers import CPSolverName - -from skdecide.discrete_optimization.generic_tools.lp_tools import ParametersMilp -from skdecide.discrete_optimization.generic_tools.cp_tools import ParametersCP from skdecide.discrete_optimization.rcpsp_multiskill.solvers.lp_model import ( LP_Solver_MRSCPSP, MilpSolverName, @@ -28,17 +33,9 @@ LNS_CP_MS_RCPSP_SOLVER, OptionNeighbor, ) -from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( - MS_RCPSPModel, - MS_RCPSPModel_Variant, -) -from skdecide.discrete_optimization.generic_tools.ea.ga_tools import ParametersAltGa from skdecide.discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_ga_solver import ( GA_MSRCPSP_Solver, ) -from skdecide.discrete_optimization.rcpsp_multiskill.solvers.calendar_solver_iterative import ( - SolverWithCalendarIterative, -) solvers = { "lp": [ diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/calendar_solver_iterative.py b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/calendar_solver_iterative.py index 8762c32a8e..667d23ffce 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/calendar_solver_iterative.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/calendar_solver_iterative.py @@ -5,46 +5,47 @@ from __future__ import annotations import random -from typing import Iterable, Any, Union, Optional +import time +from datetime import timedelta +from typing import Any, Iterable, Optional, Union + +import networkx as nx +import numpy as np +from minizinc import Status -from skdecide.discrete_optimization.generic_tools.lns_mip import PostProcessSolution -from skdecide.discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_lp_lns_solver import ( - InitialSolutionMS_RCPSP, - InitialMethodRCPSP, -) -from skdecide.discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_cp_lns_solver import ( - build_neighbor_operator, - OptionNeighbor, -) from skdecide.discrete_optimization.generic_tools.cp_tools import ( - ParametersCP, CPSolverName, -) -from skdecide.discrete_optimization.rcpsp_multiskill.solvers.cp_solvers import ( - CP_MS_MRCPSP_MZN, - PartialSolution, + ParametersCP, ) from skdecide.discrete_optimization.generic_tools.do_problem import ( - get_default_objective_setup, ModeOptim, -) -from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( - ResultStorage, + get_default_objective_setup, ) from skdecide.discrete_optimization.generic_tools.lns_cp import ( ConstraintHandler, SolverDO, ) +from skdecide.discrete_optimization.generic_tools.lns_mip import PostProcessSolution +from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( + ResultStorage, +) from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( MS_RCPSPModel, MS_RCPSPSolution, schedule_solution_to_variant, ) -import numpy as np -import time -import networkx as nx -from datetime import timedelta -from minizinc import Status +from skdecide.discrete_optimization.rcpsp_multiskill.solvers.cp_solvers import ( + CP_MS_MRCPSP_MZN, + PartialSolution, +) +from skdecide.discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_cp_lns_solver import ( + OptionNeighbor, + build_neighbor_operator, +) +from skdecide.discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_lp_lns_solver import ( + InitialMethodRCPSP, + InitialSolutionMS_RCPSP, +) def get_ressource_breaks(problem_calendar: MS_RCPSPModel, solution: MS_RCPSPSolution): diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/cp_solvers.py b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/cp_solvers.py index 94e936b3eb..3d1a27f43c 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/cp_solvers.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/cp_solvers.py @@ -4,13 +4,17 @@ from __future__ import annotations +import os from dataclasses import InitVar +from datetime import timedelta from typing import Union +from minizinc import Instance, Model, Solver + from skdecide.discrete_optimization.generic_tools.cp_tools import ( CPSolver, - ParametersCP, CPSolverName, + ParametersCP, map_cp_solver_name, ) from skdecide.discrete_optimization.generic_tools.do_problem import ( @@ -21,17 +25,13 @@ ResultStorage, ) from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPModelCalendar, PartialSolution, + RCPSPModelCalendar, ) - from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( MS_RCPSPModel, MS_RCPSPSolution, ) -from minizinc import Instance, Model, Solver -from datetime import timedelta -import os this_path = os.path.dirname(os.path.abspath(__file__)) diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/lns_post_process_rcpsp.py b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/lns_post_process_rcpsp.py index 870ebc9333..69d4a3ac06 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/lns_post_process_rcpsp.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/lns_post_process_rcpsp.py @@ -4,6 +4,9 @@ from __future__ import annotations +import networkx as nx +import numpy as np + from skdecide.discrete_optimization.generic_tools.do_problem import ( ParamsObjectiveFunction, build_aggreg_function_and_params_objective, @@ -16,8 +19,6 @@ MS_RCPSPModel, MS_RCPSPSolution, ) -import networkx as nx -import numpy as np class PostProMSRCPSP(PostProcessSolution): diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/lp_model.py b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/lp_model.py index 830b767478..a9e0ada85c 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/lp_model.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/lp_model.py @@ -4,26 +4,26 @@ from __future__ import annotations +from mip import BINARY, INTEGER, MINIMIZE, Model, xsum + from skdecide.discrete_optimization.generic_tools.do_problem import ( - build_aggreg_function_and_params_objective, ParamsObjectiveFunction, + build_aggreg_function_and_params_objective, +) +from skdecide.discrete_optimization.generic_tools.lp_tools import ( + MilpSolver, + MilpSolverName, + ParametersMilp, + map_solver, ) - from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( MS_RCPSPModel, - tree, MS_RCPSPSolution, + tree, ) -from skdecide.discrete_optimization.generic_tools.lp_tools import ( - MilpSolver, - ParametersMilp, - MilpSolverName, - map_solver, -) -from mip import Model, MINIMIZE, xsum, BINARY, INTEGER class LP_Solver_MRSCPSP(MilpSolver): diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_cp_lns_solver.py b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_cp_lns_solver.py index 4e317c0cc9..cddd22e3f7 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_cp_lns_solver.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_cp_lns_solver.py @@ -4,44 +4,41 @@ from __future__ import annotations -from typing import Iterable, Any, List - -from skdecide.discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_lp_lns_solver import ( - InitialSolutionMS_RCPSP, - InitialMethodRCPSP, -) +import random +from typing import Any, Iterable, List -from skdecide.discrete_optimization.generic_tools.do_problem import ( - get_default_objective_setup, -) +import numpy as np from skdecide.discrete_optimization.generic_tools.cp_tools import ( + CPSolver, CPSolverName, ParametersCP, - CPSolver, ) - -from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( - ResultStorage, -) -from skdecide.discrete_optimization.rcpsp_multiskill.solvers.cp_solvers import ( - CP_MS_MRCPSP_MZN, +from skdecide.discrete_optimization.generic_tools.do_problem import ( + get_default_objective_setup, ) from skdecide.discrete_optimization.generic_tools.lns_cp import ( + LNS_CP, ConstraintHandler, SolverDO, - LNS_CP, +) +from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( + ResultStorage, ) from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( MS_RCPSPModel, MS_RCPSPSolution, ) -import random -import numpy as np - +from skdecide.discrete_optimization.rcpsp_multiskill.solvers.cp_solvers import ( + CP_MS_MRCPSP_MZN, +) from skdecide.discrete_optimization.rcpsp_multiskill.solvers.lns_post_process_rcpsp import ( PostProMSRCPSP, ) +from skdecide.discrete_optimization.rcpsp_multiskill.solvers.ms_rcpsp_lp_lns_solver import ( + InitialMethodRCPSP, + InitialSolutionMS_RCPSP, +) class ConstraintHandlerStartTimeInterval_CP(ConstraintHandler): diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_ga_solver.py b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_ga_solver.py index b53cbcf472..28cb67a4ae 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_ga_solver.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_ga_solver.py @@ -4,14 +4,14 @@ from __future__ import annotations -from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO from skdecide.discrete_optimization.generic_tools.do_problem import ( ParamsObjectiveFunction, build_aggreg_function_and_params_objective, ) -from skdecide.discrete_optimization.rcpsp.rcpsp_model import MultiModeRCPSPModel -from skdecide.discrete_optimization.generic_tools.ea.ga_tools import ParametersAltGa +from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO from skdecide.discrete_optimization.generic_tools.ea.alternating_ga import AlternatingGa +from skdecide.discrete_optimization.generic_tools.ea.ga_tools import ParametersAltGa +from skdecide.discrete_optimization.rcpsp.rcpsp_model import MultiModeRCPSPModel class GA_MSRCPSP_Solver(SolverDO): diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_lp_lns_solver.py b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_lp_lns_solver.py index 2f7a2434e4..67d2ec879d 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_lp_lns_solver.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/ms_rcpsp_lp_lns_solver.py @@ -4,33 +4,34 @@ from __future__ import annotations -from typing import Iterable, Any +import random +from typing import Any, Iterable + from skdecide.discrete_optimization.generic_tools.do_problem import ( ParamsObjectiveFunction, - get_default_objective_setup, build_evaluate_function_aggregated, + get_default_objective_setup, ) +from skdecide.discrete_optimization.generic_tools.lns_mip import ( + ConstraintHandler, + InitialSolution, +) +from skdecide.discrete_optimization.generic_tools.lp_tools import MilpSolverName from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( ResultStorage, ) +from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPSolution from skdecide.discrete_optimization.rcpsp.solver.rcpsp_lp_lns_solver import ( InitialMethodRCPSP, ) -from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPSolution -from skdecide.discrete_optimization.rcpsp_multiskill.solvers.lp_model import ( - LP_Solver_MRSCPSP, -) -from skdecide.discrete_optimization.generic_tools.lp_tools import MilpSolverName -from skdecide.discrete_optimization.generic_tools.lns_mip import ( - ConstraintHandler, - InitialSolution, -) from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( - MS_RCPSPSolution, MS_RCPSPModel, + MS_RCPSPSolution, MS_RCPSPSolution_Variant, ) -import random +from skdecide.discrete_optimization.rcpsp_multiskill.solvers.lp_model import ( + LP_Solver_MRSCPSP, +) # TODO, better call the rcpsp_based_solvers directly. diff --git a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/solver_rcpsp_based.py b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/solver_rcpsp_based.py index 4c29554cdc..e8ee7cb0df 100644 --- a/skdecide/discrete_optimization/rcpsp_multiskill/solvers/solver_rcpsp_based.py +++ b/skdecide/discrete_optimization/rcpsp_multiskill/solvers/solver_rcpsp_based.py @@ -5,16 +5,17 @@ from __future__ import annotations from typing import Union -from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( - ResultStorage, -) -from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPSolution -from skdecide.discrete_optimization.rcpsp.rcpsp_solvers import solve + from skdecide.discrete_optimization.generic_tools.do_problem import ( ParamsObjectiveFunction, build_aggreg_function_and_params_objective, ) from skdecide.discrete_optimization.generic_tools.do_solver import SolverDO +from skdecide.discrete_optimization.generic_tools.result_storage.result_storage import ( + ResultStorage, +) +from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPSolution +from skdecide.discrete_optimization.rcpsp.rcpsp_solvers import solve from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( MS_RCPSPModel, MS_RCPSPModel_Variant, diff --git a/skdecide/domains.py b/skdecide/domains.py index 9e15d97c45..7ba8c9786d 100644 --- a/skdecide/domains.py +++ b/skdecide/domains.py @@ -5,43 +5,42 @@ """This module contains base classes for quickly building domains.""" from __future__ import annotations -import os import logging -from typing import NewType, Optional, Callable - -from pathos.helpers import mp +import os import tempfile -from pynng import Push0 +from typing import Callable, NewType, Optional # Following import is required to make Enum objects serializable # (useful when multiprocessing and pickling domains that use Enum classes) import dill +from pathos.helpers import mp +from pynng import Push0 dill.settings["byref"] = True -from skdecide.core import autocast_all from skdecide.builders.domain.agent import MultiAgent, SingleAgent from skdecide.builders.domain.concurrency import Parallel, Sequential from skdecide.builders.domain.dynamics import ( + DeterministicTransitions, + EnumerableTransitions, Environment, Simulation, - EnumerableTransitions, - DeterministicTransitions, ) -from skdecide.builders.domain.events import Events, Actions +from skdecide.builders.domain.events import Actions, Events from skdecide.builders.domain.goals import Goals from skdecide.builders.domain.initialization import ( + DeterministicInitialized, Initializable, UncertainInitialized, - DeterministicInitialized, ) from skdecide.builders.domain.memory import History, Markovian from skdecide.builders.domain.observability import ( + FullyObservable, PartiallyObservable, TransformedObservable, - FullyObservable, ) -from skdecide.builders.domain.value import Rewards, PositiveCosts +from skdecide.builders.domain.value import PositiveCosts, Rewards +from skdecide.core import autocast_all if ( False diff --git a/skdecide/hub/__init__.py b/skdecide/hub/__init__.py index 531822ed23..b3ef60fc73 100644 --- a/skdecide/hub/__init__.py +++ b/skdecide/hub/__init__.py @@ -4,12 +4,11 @@ import fnmatch import os -import sys - import platform -from pathlib import Path -from ctypes.util import find_library import shutil +import sys +from ctypes.util import find_library +from pathlib import Path pl = [] diff --git a/skdecide/hub/domain/_pddl/pddl.py b/skdecide/hub/domain/_pddl/pddl.py index b376fcbdee..ebdc4a20d0 100644 --- a/skdecide/hub/domain/_pddl/pddl.py +++ b/skdecide/hub/domain/_pddl/pddl.py @@ -5,7 +5,9 @@ # TODO: finish work in progress from __future__ import annotations -import sys, os +import os +import sys + from skdecide import hub record_sys_path = sys.path @@ -15,62 +17,62 @@ try: from __skdecide_hub_cpp import _PDDL_ as PDDL - from __skdecide_hub_cpp import _PDDL_Domain_ as Domain - from __skdecide_hub_cpp import _PDDL_Requirements_ as Requirements - from __skdecide_hub_cpp import _PDDL_Type_ as Type - from __skdecide_hub_cpp import _PDDL_Term_ as Term - from __skdecide_hub_cpp import _PDDL_Variable_ as Variable - from __skdecide_hub_cpp import _PDDL_Object_ as Object - from __skdecide_hub_cpp import _PDDL_Predicate_ as Predicate - from __skdecide_hub_cpp import _PDDL_Function_ as Function - from __skdecide_hub_cpp import _PDDL_DerivedPredicate_ as DerivedPredicate + from __skdecide_hub_cpp import _PDDL_Action_ as Action + from __skdecide_hub_cpp import _PDDL_AddExpression_ as AddExpression + from __skdecide_hub_cpp import _PDDL_AssignEffect_ as AssignEffect + from __skdecide_hub_cpp import _PDDL_AtEndEffect_ as AtEndEffect + from __skdecide_hub_cpp import _PDDL_AtEndFormula_ as AtEndFormula + from __skdecide_hub_cpp import _PDDL_AtStartEffect_ as AtStartEffect + from __skdecide_hub_cpp import _PDDL_AtStartFormula_ as AtStartFormula from __skdecide_hub_cpp import _PDDL_Class_ as Class - from __skdecide_hub_cpp import _PDDL_Formula_ as Formula - from __skdecide_hub_cpp import _PDDL_Preference_ as Preference - from __skdecide_hub_cpp import _PDDL_PredicateFormula_ as PredicateFormula - from __skdecide_hub_cpp import _PDDL_UniversalFormula_ as UniversalFormula - from __skdecide_hub_cpp import _PDDL_ExistentialFormula_ as ExistentialFormula + from __skdecide_hub_cpp import _PDDL_ConditionalEffect_ as ConditionalEffect + from __skdecide_hub_cpp import _PDDL_ConjunctionEffect_ as ConjunctionEffect from __skdecide_hub_cpp import _PDDL_ConjunctionFormula_ as ConjunctionFormula + from __skdecide_hub_cpp import _PDDL_DecreaseEffect_ as DecreaseEffect + from __skdecide_hub_cpp import _PDDL_DerivedPredicate_ as DerivedPredicate + from __skdecide_hub_cpp import _PDDL_DisjunctionEffect_ as DisjunctionEffect from __skdecide_hub_cpp import _PDDL_DisjunctionFormula_ as DisjunctionFormula - from __skdecide_hub_cpp import _PDDL_ImplyFormula_ as ImplyFormula - from __skdecide_hub_cpp import _PDDL_NegationFormula_ as NegationFormula - from __skdecide_hub_cpp import _PDDL_AtStartFormula_ as AtStartFormula - from __skdecide_hub_cpp import _PDDL_AtEndFormula_ as AtEndFormula - from __skdecide_hub_cpp import _PDDL_OverAllFormula_ as OverAllFormula + from __skdecide_hub_cpp import _PDDL_DivExpression_ as DivExpression + from __skdecide_hub_cpp import _PDDL_Domain_ as Domain + from __skdecide_hub_cpp import _PDDL_DurationEffect_ as DurationEffect from __skdecide_hub_cpp import _PDDL_DurationFormula_ as DurationFormula - from __skdecide_hub_cpp import _PDDL_GreaterFormula_ as GreaterFormula + from __skdecide_hub_cpp import _PDDL_DurativeAction_ as DurativeAction + from __skdecide_hub_cpp import _PDDL_Effect_ as Effect + from __skdecide_hub_cpp import _PDDL_Event_ as Event + from __skdecide_hub_cpp import _PDDL_ExistentialEffect_ as ExistentialEffect + from __skdecide_hub_cpp import _PDDL_ExistentialFormula_ as ExistentialFormula + from __skdecide_hub_cpp import _PDDL_Expression_ as Expression + from __skdecide_hub_cpp import _PDDL_Formula_ as Formula + from __skdecide_hub_cpp import _PDDL_Function_ as Function + from __skdecide_hub_cpp import _PDDL_FunctionEffect_ as FunctionEffect + from __skdecide_hub_cpp import _PDDL_FunctionExpression_ as FunctionExpression from __skdecide_hub_cpp import _PDDL_GreaterEqFormula_ as GreaterEqFormula - from __skdecide_hub_cpp import _PDDL_LessFormula_ as LessFormula + from __skdecide_hub_cpp import _PDDL_GreaterFormula_ as GreaterFormula + from __skdecide_hub_cpp import _PDDL_ImplyFormula_ as ImplyFormula + from __skdecide_hub_cpp import _PDDL_IncreaseEffect_ as IncreaseEffect from __skdecide_hub_cpp import _PDDL_LessEqFormula_ as LessEqFormula - from __skdecide_hub_cpp import _PDDL_Expression_ as Expression - from __skdecide_hub_cpp import _PDDL_AddExpression_ as AddExpression - from __skdecide_hub_cpp import _PDDL_SubExpression_ as SubExpression - from __skdecide_hub_cpp import _PDDL_MulExpression_ as MulExpression - from __skdecide_hub_cpp import _PDDL_DivExpression_ as DivExpression + from __skdecide_hub_cpp import _PDDL_LessFormula_ as LessFormula from __skdecide_hub_cpp import _PDDL_MinusExpression_ as MinusExpression + from __skdecide_hub_cpp import _PDDL_MulExpression_ as MulExpression + from __skdecide_hub_cpp import _PDDL_NegationEffect_ as NegationEffect + from __skdecide_hub_cpp import _PDDL_NegationFormula_ as NegationFormula from __skdecide_hub_cpp import _PDDL_NumericalExpression_ as NumericalExpression - from __skdecide_hub_cpp import _PDDL_FunctionExpression_ as FunctionExpression - from __skdecide_hub_cpp import _PDDL_Effect_ as Effect + from __skdecide_hub_cpp import _PDDL_Object_ as Object + from __skdecide_hub_cpp import _PDDL_OverAllFormula_ as OverAllFormula + from __skdecide_hub_cpp import _PDDL_Predicate_ as Predicate from __skdecide_hub_cpp import _PDDL_PredicateEffect_ as PredicateEffect - from __skdecide_hub_cpp import _PDDL_ConjunctionEffect_ as ConjunctionEffect - from __skdecide_hub_cpp import _PDDL_DisjunctionEffect_ as DisjunctionEffect - from __skdecide_hub_cpp import _PDDL_UniversalEffect_ as UniversalEffect - from __skdecide_hub_cpp import _PDDL_ExistentialEffect_ as ExistentialEffect - from __skdecide_hub_cpp import _PDDL_ConditionalEffect_ as ConditionalEffect - from __skdecide_hub_cpp import _PDDL_NegationEffect_ as NegationEffect - from __skdecide_hub_cpp import _PDDL_AtStartEffect_ as AtStartEffect - from __skdecide_hub_cpp import _PDDL_AtEndEffect_ as AtEndEffect - from __skdecide_hub_cpp import _PDDL_DurationEffect_ as DurationEffect - from __skdecide_hub_cpp import _PDDL_FunctionEffect_ as FunctionEffect - from __skdecide_hub_cpp import _PDDL_AssignEffect_ as AssignEffect - from __skdecide_hub_cpp import _PDDL_ScaleUpEffect_ as ScaleUpEffect - from __skdecide_hub_cpp import _PDDL_ScaleDownEffect_ as ScaleDownEffect - from __skdecide_hub_cpp import _PDDL_IncreaseEffect_ as IncreaseEffect - from __skdecide_hub_cpp import _PDDL_DecreaseEffect_ as DecreaseEffect - from __skdecide_hub_cpp import _PDDL_Action_ as Action - from __skdecide_hub_cpp import _PDDL_DurativeAction_ as DurativeAction - from __skdecide_hub_cpp import _PDDL_Event_ as Event + from __skdecide_hub_cpp import _PDDL_PredicateFormula_ as PredicateFormula + from __skdecide_hub_cpp import _PDDL_Preference_ as Preference from __skdecide_hub_cpp import _PDDL_Process_ as Process + from __skdecide_hub_cpp import _PDDL_Requirements_ as Requirements + from __skdecide_hub_cpp import _PDDL_ScaleDownEffect_ as ScaleDownEffect + from __skdecide_hub_cpp import _PDDL_ScaleUpEffect_ as ScaleUpEffect + from __skdecide_hub_cpp import _PDDL_SubExpression_ as SubExpression + from __skdecide_hub_cpp import _PDDL_Term_ as Term + from __skdecide_hub_cpp import _PDDL_Type_ as Type + from __skdecide_hub_cpp import _PDDL_UniversalEffect_ as UniversalEffect + from __skdecide_hub_cpp import _PDDL_UniversalFormula_ as UniversalFormula + from __skdecide_hub_cpp import _PDDL_Variable_ as Variable except ImportError: sys.path = record_sys_path print( diff --git a/skdecide/hub/domain/gym/__init__.py b/skdecide/hub/domain/gym/__init__.py index 3979fe3dd5..af2ad37f03 100644 --- a/skdecide/hub/domain/gym/__init__.py +++ b/skdecide/hub/domain/gym/__init__.py @@ -3,14 +3,14 @@ # LICENSE file in the root directory of this source tree. from .gym import ( - GymDomain, + AsGymEnv, + CostDeterministicGymDomain, + DeterministicGymDomain, DeterministicInitializedGymDomain, - GymWidthDomain, GymDiscreteActionDomain, - DeterministicGymDomain, - CostDeterministicGymDomain, - GymPlanningDomain, - GymDomainStateProxy, + GymDomain, GymDomainHashable, - AsGymEnv, + GymDomainStateProxy, + GymPlanningDomain, + GymWidthDomain, ) diff --git a/skdecide/hub/domain/gym/gym.py b/skdecide/hub/domain/gym/gym.py index eb965504dd..a80013e014 100644 --- a/skdecide/hub/domain/gym/gym.py +++ b/skdecide/hub/domain/gym/gym.py @@ -5,33 +5,33 @@ # TODO: support OpenAI GoalEnv from __future__ import annotations +import bisect import random import struct -import bisect -from copy import deepcopy -from typing import Any, Optional, Callable, List -from collections import ( +from collections import ( # TODO: replace with `from typing import NamedTuple`? namedtuple, -) # TODO: replace with `from typing import NamedTuple`? +) +from copy import deepcopy +from typing import Any, Callable, List, Optional import gym import numpy as np -from skdecide import Domain, Space, Value, TransitionOutcome, ImplicitSpace +from skdecide import Domain, ImplicitSpace, Space, TransitionOutcome, Value from skdecide.builders.domain import ( - SingleAgent, - Sequential, + DeterministicInitialized, DeterministicTransitions, - UnrestrictedActions, + FullyObservable, + Goals, Initializable, - DeterministicInitialized, Markovian, Memoryless, - FullyObservable, + PositiveCosts, Renderable, Rewards, - PositiveCosts, - Goals, + Sequential, + SingleAgent, + UnrestrictedActions, ) from skdecide.hub.space.gym import GymSpace, ListSpace diff --git a/skdecide/hub/domain/mastermind/mastermind.py b/skdecide/hub/domain/mastermind/mastermind.py index e664c82f14..3f7c04be54 100644 --- a/skdecide/hub/domain/mastermind/mastermind.py +++ b/skdecide/hub/domain/mastermind/mastermind.py @@ -5,17 +5,16 @@ # Original code by Patrik Haslum from __future__ import annotations -from typing import NamedTuple, Tuple, Optional +from typing import NamedTuple, Optional, Tuple -from skdecide import GoalPOMDPDomain, Value, Space, DiscreteDistribution, Distribution +from skdecide import DiscreteDistribution, Distribution, GoalPOMDPDomain, Space, Value from skdecide.builders.domain import ( DeterministicTransitions, - UnrestrictedActions, TransformedObservable, + UnrestrictedActions, ) from skdecide.hub.space.gym import ListSpace, MultiDiscreteSpace - Row = Tuple[int] # a row of code pegs (solution or guess) diff --git a/skdecide/hub/domain/maze/maze.py b/skdecide/hub/domain/maze/maze.py index 2baf27c1c3..68c1af8c9d 100644 --- a/skdecide/hub/domain/maze/maze.py +++ b/skdecide/hub/domain/maze/maze.py @@ -6,14 +6,13 @@ from copy import deepcopy from enum import Enum -from typing import NamedTuple, Optional, Any +from typing import Any, NamedTuple, Optional import matplotlib.pyplot as plt -from skdecide import DeterministicPlanningDomain, Value, Space -from skdecide.builders.domain import UnrestrictedActions, Renderable -from skdecide.hub.space.gym import ListSpace, EnumSpace, MultiDiscreteSpace - +from skdecide import DeterministicPlanningDomain, Space, Value +from skdecide.builders.domain import Renderable, UnrestrictedActions +from skdecide.hub.space.gym import EnumSpace, ListSpace, MultiDiscreteSpace DEFAULT_MAZE = """ +-+-+-+-+o+-+-+-+-+-+ diff --git a/skdecide/hub/domain/rcpsp/rcpsp_sk.py b/skdecide/hub/domain/rcpsp/rcpsp_sk.py index 39b4931ff9..2be5b04371 100644 --- a/skdecide/hub/domain/rcpsp/rcpsp_sk.py +++ b/skdecide/hub/domain/rcpsp/rcpsp_sk.py @@ -4,21 +4,22 @@ from __future__ import annotations -from typing import Optional, List, Dict, Union, Set, Any -from skdecide import Distribution, DiscreteDistribution +from typing import Any, Dict, List, Optional, Set, Union + +from skdecide import DiscreteDistribution, Distribution from skdecide.builders.domain.scheduling.modes import ( - ModeConsumption, ConstantModeConsumption, + ModeConsumption, ) from skdecide.builders.domain.scheduling.scheduling_domains import ( - MultiModeRCPSP, - SingleMode, - MultiModeRCPSP_Stochastic_Durations, MultiModeMultiSkillRCPSP, - SchedulingObjectiveEnum, MultiModeMultiSkillRCPSPCalendar, + MultiModeRCPSP, + MultiModeRCPSP_Stochastic_Durations, MultiModeRCPSPCalendar, MultiModeRCPSPCalendar_Stochastic_Durations, + SchedulingObjectiveEnum, + SingleMode, ) diff --git a/skdecide/hub/domain/rcpsp/rcpsp_sk_parser.py b/skdecide/hub/domain/rcpsp/rcpsp_sk_parser.py index 760bfedb7c..c011de40aa 100644 --- a/skdecide/hub/domain/rcpsp/rcpsp_sk_parser.py +++ b/skdecide/hub/domain/rcpsp/rcpsp_sk_parser.py @@ -7,16 +7,17 @@ # Load rcpsp domains from psplib files. # You need the discrete optimisation library to be able to use those. from typing import Union + from skdecide.hub.domain.rcpsp.rcpsp_sk import MSRCPSP def load_domain(file_path): from skdecide.discrete_optimization.rcpsp.parser.rcpsp_parser import ( - parse_file, - SingleModeRCPSPModel, MultiModeRCPSPModel, + SingleModeRCPSPModel, + parse_file, ) - from skdecide.hub.domain.rcpsp.rcpsp_sk import RCPSP, MRCPSP + from skdecide.hub.domain.rcpsp.rcpsp_sk import MRCPSP, RCPSP rcpsp_model: Union[SingleModeRCPSPModel, MultiModeRCPSPModel] = parse_file( file_path diff --git a/skdecide/hub/domain/rock_paper_scissors/rock_paper_scissors.py b/skdecide/hub/domain/rock_paper_scissors/rock_paper_scissors.py index c6530a65a5..f46bee9c1e 100644 --- a/skdecide/hub/domain/rock_paper_scissors/rock_paper_scissors.py +++ b/skdecide/hub/domain/rock_paper_scissors/rock_paper_scissors.py @@ -7,7 +7,7 @@ from enum import Enum from typing import NamedTuple, Optional -from skdecide import Domain, Value, Space, TransitionOutcome +from skdecide import Domain, Space, TransitionOutcome, Value from skdecide.builders.domain import * from skdecide.hub.space.gym import EnumSpace diff --git a/skdecide/hub/domain/simple_grid_world/simple_grid_world.py b/skdecide/hub/domain/simple_grid_world/simple_grid_world.py index fb97829ee7..4579d4add6 100644 --- a/skdecide/hub/domain/simple_grid_world/simple_grid_world.py +++ b/skdecide/hub/domain/simple_grid_world/simple_grid_world.py @@ -7,9 +7,9 @@ from enum import Enum from typing import NamedTuple, Optional -from skdecide import DeterministicPlanningDomain, Value, Space +from skdecide import DeterministicPlanningDomain, Space, Value from skdecide.builders.domain import UnrestrictedActions -from skdecide.hub.space.gym import ListSpace, EnumSpace, MultiDiscreteSpace +from skdecide.hub.space.gym import EnumSpace, ListSpace, MultiDiscreteSpace class State(NamedTuple): diff --git a/skdecide/hub/solver/aostar/aostar.py b/skdecide/hub/solver/aostar/aostar.py index 7e97dd451c..08721ae7c6 100644 --- a/skdecide/hub/solver/aostar/aostar.py +++ b/skdecide/hub/solver/aostar/aostar.py @@ -6,22 +6,21 @@ import os import sys -from typing import Optional, Callable +from typing import Callable, Optional -from skdecide import Domain, Solver -from skdecide import hub -from skdecide.core import Value +from skdecide import Domain, Solver, hub from skdecide.builders.domain import ( - SingleAgent, - Sequential, - EnumerableTransitions, Actions, + EnumerableTransitions, + FullyObservable, Goals, Markovian, - FullyObservable, PositiveCosts, + Sequential, + SingleAgent, ) -from skdecide.builders.solver import ParallelSolver, DeterministicPolicies, Utilities +from skdecide.builders.solver import DeterministicPolicies, ParallelSolver, Utilities +from skdecide.core import Value record_sys_path = sys.path skdecide_cpp_extension_lib_path = os.path.abspath(hub.__path__[0]) diff --git a/skdecide/hub/solver/ars/ars.py b/skdecide/hub/solver/ars/ars.py index 70e8f6ce48..a0256c75dc 100755 --- a/skdecide/hub/solver/ars/ars.py +++ b/skdecide/hub/solver/ars/ars.py @@ -4,24 +4,25 @@ from __future__ import annotations -import numpy as np -import gym -from typing import Callable from collections.abc import Iterable +from typing import Callable + +import gym +import numpy as np from skdecide import Domain, Solver -from skdecide.hub.solver.cgp import cgp -from skdecide.builders.solver import Policies, Restorable from skdecide.builders.domain import ( - SingleAgent, - Sequential, Environment, - UnrestrictedActions, - Initializable, History, + Initializable, PartiallyObservable, Rewards, + Sequential, + SingleAgent, + UnrestrictedActions, ) +from skdecide.builders.solver import Policies, Restorable +from skdecide.hub.solver.cgp import cgp class D( diff --git a/skdecide/hub/solver/astar/astar.py b/skdecide/hub/solver/astar/astar.py index b5498913db..acbee820bc 100644 --- a/skdecide/hub/solver/astar/astar.py +++ b/skdecide/hub/solver/astar/astar.py @@ -6,22 +6,21 @@ import os import sys -from typing import Optional, Callable +from typing import Callable, Optional -from skdecide import Domain, Solver -from skdecide import hub -from skdecide.core import Value +from skdecide import Domain, Solver, hub from skdecide.builders.domain import ( - SingleAgent, - Sequential, - DeterministicTransitions, Actions, + DeterministicTransitions, + FullyObservable, Goals, Markovian, - FullyObservable, PositiveCosts, + Sequential, + SingleAgent, ) -from skdecide.builders.solver import ParallelSolver, DeterministicPolicies, Utilities +from skdecide.builders.solver import DeterministicPolicies, ParallelSolver, Utilities +from skdecide.core import Value record_sys_path = sys.path skdecide_cpp_extension_lib_path = os.path.abspath(hub.__path__[0]) diff --git a/skdecide/hub/solver/bfws/bfws.py b/skdecide/hub/solver/bfws/bfws.py index 67719fd1c6..7c9fdfceef 100644 --- a/skdecide/hub/solver/bfws/bfws.py +++ b/skdecide/hub/solver/bfws/bfws.py @@ -6,22 +6,21 @@ import os import sys -from typing import Callable, Any +from typing import Any, Callable -from skdecide import Domain, Solver -from skdecide import hub -from skdecide.core import Value +from skdecide import Domain, Solver, hub from skdecide.builders.domain import ( - SingleAgent, - Sequential, - DeterministicTransitions, Actions, DeterministicInitialized, - Markovian, + DeterministicTransitions, FullyObservable, + Markovian, Rewards, + Sequential, + SingleAgent, ) -from skdecide.builders.solver import ParallelSolver, DeterministicPolicies, Utilities +from skdecide.builders.solver import DeterministicPolicies, ParallelSolver, Utilities +from skdecide.core import Value record_sys_path = sys.path skdecide_cpp_extension_lib_path = os.path.abspath(hub.__path__[0]) diff --git a/skdecide/hub/solver/cgp/cgp.py b/skdecide/hub/solver/cgp/cgp.py index aaa4494389..5489e1d504 100755 --- a/skdecide/hub/solver/cgp/cgp.py +++ b/skdecide/hub/solver/cgp/cgp.py @@ -4,48 +4,49 @@ from __future__ import annotations -from typing import Callable from collections.abc import Iterable +from typing import Callable import gym import numpy as np from skdecide import Domain, Solver from skdecide.builders.domain import ( - SingleAgent, - Sequential, Environment, - UnrestrictedActions, - Initializable, History, + Initializable, PartiallyObservable, Rewards, + Sequential, + SingleAgent, + UnrestrictedActions, ) from skdecide.builders.solver import DeterministicPolicies, Restorable from skdecide.hub.space.gym import GymSpace + from .pycgp.cgpes import CGP, CGPES, Evaluator from .pycgp.cgpfunctions import ( - f_sum, - f_aminus, - f_mult, - f_exp, f_abs, - f_sqrt, - f_sqrtxy, - f_squared, - f_pow, - f_one, - f_zero, - f_inv, - f_gt, f_acos, + f_aminus, f_asin, f_atan, - f_min, + f_ceil, + f_exp, + f_floor, + f_gt, + f_inv, f_max, + f_min, + f_mult, + f_one, + f_pow, f_round, - f_floor, - f_ceil, + f_sqrt, + f_sqrtxy, + f_squared, + f_sum, + f_zero, ) diff --git a/skdecide/hub/solver/cgp/pycgp/cgp.py b/skdecide/hub/solver/cgp/pycgp/cgp.py index 3e5556e533..e04b61fb79 100644 --- a/skdecide/hub/solver/cgp/pycgp/cgp.py +++ b/skdecide/hub/solver/cgp/pycgp/cgp.py @@ -2,9 +2,10 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +import random as rnd import sys + import numpy as np -import random as rnd class CGP: diff --git a/skdecide/hub/solver/cgp/pycgp/cgpes.py b/skdecide/hub/solver/cgp/pycgp/cgpes.py index 48a7e0bc91..aa90d54e24 100644 --- a/skdecide/hub/solver/cgp/pycgp/cgpes.py +++ b/skdecide/hub/solver/cgp/pycgp/cgpes.py @@ -3,10 +3,12 @@ # LICENSE file in the root directory of this source tree. import os + import numpy as np +from joblib import Parallel, delayed + from .cgp import CGP from .evaluator import Evaluator -from joblib import Parallel, delayed class CGPES: diff --git a/skdecide/hub/solver/cgp/pycgp/cgpfunctions.py b/skdecide/hub/solver/cgp/pycgp/cgpfunctions.py index 7256bebb6c..9074b26216 100644 --- a/skdecide/hub/solver/cgp/pycgp/cgpfunctions.py +++ b/skdecide/hub/solver/cgp/pycgp/cgpfunctions.py @@ -2,9 +2,10 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -import numpy as np import math +import numpy as np + def f_sum(args): return 0.5 * (args[0] + args[1]) diff --git a/skdecide/hub/solver/do_solver/do_solver_scheduling.py b/skdecide/hub/solver/do_solver/do_solver_scheduling.py index a306fc93f1..34bf794aa4 100644 --- a/skdecide/hub/solver/do_solver/do_solver_scheduling.py +++ b/skdecide/hub/solver/do_solver/do_solver_scheduling.py @@ -4,31 +4,29 @@ from __future__ import annotations -from typing import Union, Callable, Dict, Any +from enum import Enum +from typing import Any, Callable, Dict, Union from skdecide.builders.domain.scheduling.scheduling_domains import SchedulingDomain -from skdecide.hub.solver.sgs_policies.sgs_policies import ( - PolicyRCPSP, - PolicyMethodParams, - BasePolicyMethod, -) -from skdecide.solvers import Solver, DeterministicPolicies -from skdecide.hub.solver.do_solver.sk_to_do_binding import build_do_domain from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPModel, - SingleModeRCPSPModel, MultiModeRCPSPModel, + RCPSPModel, RCPSPModelCalendar, RCPSPSolution, + SingleModeRCPSPModel, ) from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( MS_RCPSPModel, - MS_RCPSPSolution_Variant, MS_RCPSPSolution, + MS_RCPSPSolution_Variant, ) - - -from enum import Enum +from skdecide.hub.solver.do_solver.sk_to_do_binding import build_do_domain +from skdecide.hub.solver.sgs_policies.sgs_policies import ( + BasePolicyMethod, + PolicyMethodParams, + PolicyRCPSP, +) +from skdecide.solvers import DeterministicPolicies, Solver class D(SchedulingDomain): diff --git a/skdecide/hub/solver/do_solver/sk_to_do_binding.py b/skdecide/hub/solver/do_solver/sk_to_do_binding.py index 68e9e54f5a..ab4dcfca82 100644 --- a/skdecide/hub/solver/do_solver/sk_to_do_binding.py +++ b/skdecide/hub/solver/do_solver/sk_to_do_binding.py @@ -7,37 +7,37 @@ from typing import Union from skdecide.builders.domain.scheduling.scheduling_domains import ( - SchedulingDomain, - SingleModeRCPSP, - SingleModeRCPSPCalendar, + MultiModeMultiSkillRCPSP, + MultiModeMultiSkillRCPSPCalendar, MultiModeRCPSP, MultiModeRCPSPCalendar, - MultiModeMultiSkillRCPSPCalendar, - MultiModeMultiSkillRCPSP, MultiModeRCPSPWithCost, - State, + SchedulingDomain, + SingleModeRCPSP, SingleModeRCPSP_Stochastic_Durations, -) -from skdecide.hub.domain.rcpsp.rcpsp_sk import ( - RCPSP, - MRCPSP, - MSRCPSP, - MRCPSPCalendar, - MSRCPSPCalendar, + SingleModeRCPSPCalendar, + State, ) from skdecide.discrete_optimization.rcpsp.rcpsp_model import ( - RCPSPModel, - SingleModeRCPSPModel, MultiModeRCPSPModel, + RCPSPModel, RCPSPModelCalendar, RCPSPSolution, + SingleModeRCPSPModel, ) from skdecide.discrete_optimization.rcpsp_multiskill.rcpsp_multiskill import ( + Employee, MS_RCPSPModel, MS_RCPSPModel_Variant, - Employee, SkillDetail, ) +from skdecide.hub.domain.rcpsp.rcpsp_sk import ( + MRCPSP, + MSRCPSP, + RCPSP, + MRCPSPCalendar, + MSRCPSPCalendar, +) def from_last_state_to_solution(state: State, domain: SchedulingDomain): diff --git a/skdecide/hub/solver/gphh/gphh.py b/skdecide/hub/solver/gphh/gphh.py index 78f00ae92d..6957abd050 100644 --- a/skdecide/hub/solver/gphh/gphh.py +++ b/skdecide/hub/solver/gphh/gphh.py @@ -4,38 +4,36 @@ from __future__ import annotations -from typing import List, Dict, Callable, Set -from skdecide.builders.solver.policy import DeterministicPolicies +import operator +import random +from enum import Enum +from typing import Callable, Dict, List, Set + +import numpy as np +from deap import algorithms, creator, gp, tools +from deap.base import Fitness, Toolbox +from deap.gp import PrimitiveSet, PrimitiveTree, genHalfAndHalf +from scipy import stats +from scipy.spatial import distance + from skdecide import Solver from skdecide.builders.domain.scheduling.modes import SingleMode +from skdecide.builders.domain.scheduling.scheduling_domains import D, SchedulingDomain from skdecide.builders.domain.scheduling.scheduling_domains_modelling import ( - State, SchedulingAction, + State, ) -from skdecide.builders.domain.scheduling.scheduling_domains import SchedulingDomain, D +from skdecide.builders.solver.policy import DeterministicPolicies +from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPSolution +from skdecide.discrete_optimization.rcpsp.solver.cpm import CPM from skdecide.hub.solver.do_solver.do_solver_scheduling import ( - PolicyRCPSP, DOSolver, PolicyMethodParams, + PolicyRCPSP, SolvingMethod, ) -from skdecide.hub.solver.sgs_policies.sgs_policies import BasePolicyMethod -from skdecide.discrete_optimization.rcpsp.solver.cpm import CPM from skdecide.hub.solver.do_solver.sk_to_do_binding import build_do_domain -from skdecide.discrete_optimization.rcpsp.rcpsp_model import RCPSPSolution -from enum import Enum -from deap.gp import PrimitiveSet, PrimitiveTree, genHalfAndHalf -from deap import gp -from deap import algorithms -from deap.base import Toolbox, Fitness -from deap import creator -from deap import tools - -import operator -import numpy as np -import random -from scipy import stats -from scipy.spatial import distance +from skdecide.hub.solver.sgs_policies.sgs_policies import BasePolicyMethod def if_then_else(input, output1, output2): diff --git a/skdecide/hub/solver/graph_explorer/DFSExploration.py b/skdecide/hub/solver/graph_explorer/DFSExploration.py index db1eab5df9..fe9fc861bf 100644 --- a/skdecide/hub/solver/graph_explorer/DFSExploration.py +++ b/skdecide/hub/solver/graph_explorer/DFSExploration.py @@ -4,12 +4,11 @@ from __future__ import annotations -from skdecide.hub.solver.graph_explorer.GraphDomain import GraphDomain -from skdecide.hub.solver.graph_explorer.GraphExploration import GraphExploration - +from typing import Any from skdecide import DeterministicPlanningDomain, Memory -from typing import Any +from skdecide.hub.solver.graph_explorer.GraphDomain import GraphDomain +from skdecide.hub.solver.graph_explorer.GraphExploration import GraphExploration class DFSExploration(GraphExploration): diff --git a/skdecide/hub/solver/graph_explorer/DFS_Uncertain_Exploration.py b/skdecide/hub/solver/graph_explorer/DFS_Uncertain_Exploration.py index 832d757162..5c95c8bf88 100644 --- a/skdecide/hub/solver/graph_explorer/DFS_Uncertain_Exploration.py +++ b/skdecide/hub/solver/graph_explorer/DFS_Uncertain_Exploration.py @@ -4,15 +4,16 @@ from __future__ import annotations +from heapq import heappop, heappush +from itertools import count +from typing import Any, Dict, Tuple + +from skdecide import D, DeterministicPlanningDomain, GoalMDPDomain, MDPDomain, Memory from skdecide.hub.solver.graph_explorer.GraphDomain import ( GraphDomain, GraphDomainUncertain, ) from skdecide.hub.solver.graph_explorer.GraphExploration import GraphExploration -from skdecide import DeterministicPlanningDomain, Memory, MDPDomain, GoalMDPDomain, D -from typing import Any, Dict, Tuple -from heapq import heappop, heappush -from itertools import count # WARNING : adapted for the scheduling domains. diff --git a/skdecide/hub/solver/graph_explorer/FullSpaceExploration.py b/skdecide/hub/solver/graph_explorer/FullSpaceExploration.py index f6bd0caa90..d70e816347 100644 --- a/skdecide/hub/solver/graph_explorer/FullSpaceExploration.py +++ b/skdecide/hub/solver/graph_explorer/FullSpaceExploration.py @@ -4,12 +4,11 @@ from __future__ import annotations -from skdecide.hub.solver.graph_explorer.GraphDomain import GraphDomain -from skdecide.hub.solver.graph_explorer.GraphExploration import GraphExploration - +from typing import Any from skdecide import DeterministicPlanningDomain, Memory -from typing import Any +from skdecide.hub.solver.graph_explorer.GraphDomain import GraphDomain +from skdecide.hub.solver.graph_explorer.GraphExploration import GraphExploration class FullSpaceExploration(GraphExploration): diff --git a/skdecide/hub/solver/graph_explorer/GraphDomain.py b/skdecide/hub/solver/graph_explorer/GraphDomain.py index f80d772aba..2dd96dc1c6 100644 --- a/skdecide/hub/solver/graph_explorer/GraphDomain.py +++ b/skdecide/hub/solver/graph_explorer/GraphDomain.py @@ -3,29 +3,34 @@ # LICENSE file in the root directory of this source tree. from __future__ import annotations -from typing import Any, Dict, List, Iterable, Optional, Union, Tuple + +import random +from typing import Any, Dict, Iterable, List, Optional, Tuple, Union + +import networkx as nx + from skdecide import ( - Memory, - Space, - Value, + D, + DeterministicPlanningDomain, + Distribution, + Domain, EnumerableSpace, + ImplicitSpace, + Memory, SamplableSpace, + Space, T, - ImplicitSpace, - Distribution, + Value, ) -import random from skdecide.builders.domain import ( - DeterministicTransitions, Actions, + DeterministicTransitions, + FullyObservable, Goals, Markovian, - FullyObservable, PositiveCosts, UncertainTransitions, ) -from skdecide import Domain, DeterministicPlanningDomain, D -import networkx as nx class ActionSpace(EnumerableSpace, SamplableSpace): diff --git a/skdecide/hub/solver/graph_explorer/GraphExploration.py b/skdecide/hub/solver/graph_explorer/GraphExploration.py index 89e79f1dc5..6a5576e402 100644 --- a/skdecide/hub/solver/graph_explorer/GraphExploration.py +++ b/skdecide/hub/solver/graph_explorer/GraphExploration.py @@ -4,8 +4,9 @@ from __future__ import annotations -from typing import Any, Union from abc import abstractmethod +from typing import Any, Union + from skdecide.hub.solver.graph_explorer.GraphDomain import ( GraphDomain, GraphDomainUncertain, diff --git a/skdecide/hub/solver/ilaostar/ilaostar.py b/skdecide/hub/solver/ilaostar/ilaostar.py index 7717cdc6a5..9fd4956ee0 100644 --- a/skdecide/hub/solver/ilaostar/ilaostar.py +++ b/skdecide/hub/solver/ilaostar/ilaostar.py @@ -6,22 +6,21 @@ import os import sys -from typing import Optional, Callable, Dict, Tuple +from typing import Callable, Dict, Optional, Tuple -from skdecide import Domain, Solver -from skdecide import hub -from skdecide.core import Value +from skdecide import Domain, Solver, hub from skdecide.builders.domain import ( - SingleAgent, - Sequential, - EnumerableTransitions, Actions, + EnumerableTransitions, + FullyObservable, Goals, Markovian, - FullyObservable, PositiveCosts, + Sequential, + SingleAgent, ) -from skdecide.builders.solver import ParallelSolver, DeterministicPolicies, Utilities +from skdecide.builders.solver import DeterministicPolicies, ParallelSolver, Utilities +from skdecide.core import Value record_sys_path = sys.path skdecide_cpp_extension_lib_path = os.path.abspath(hub.__path__[0]) diff --git a/skdecide/hub/solver/iw/iw.py b/skdecide/hub/solver/iw/iw.py index de161e8c77..8aa62a6e85 100644 --- a/skdecide/hub/solver/iw/iw.py +++ b/skdecide/hub/solver/iw/iw.py @@ -6,21 +6,20 @@ import os import sys -from typing import Callable, Any, List, Tuple +from typing import Any, Callable, List, Tuple -from skdecide import Domain, Solver -from skdecide import hub +from skdecide import Domain, Solver, hub from skdecide.builders.domain import ( - SingleAgent, - Sequential, - DeterministicTransitions, Actions, DeterministicInitialized, - Markovian, + DeterministicTransitions, FullyObservable, + Markovian, Rewards, + Sequential, + SingleAgent, ) -from skdecide.builders.solver import ParallelSolver, DeterministicPolicies, Utilities +from skdecide.builders.solver import DeterministicPolicies, ParallelSolver, Utilities from skdecide.hub.space.gym import ListSpace record_sys_path = sys.path diff --git a/skdecide/hub/solver/lazy_astar/lazy_astar.py b/skdecide/hub/solver/lazy_astar/lazy_astar.py index 47fa6dd61f..b588d2ae0f 100644 --- a/skdecide/hub/solver/lazy_astar/lazy_astar.py +++ b/skdecide/hub/solver/lazy_astar/lazy_astar.py @@ -4,20 +4,20 @@ from __future__ import annotations -from heapq import heappush, heappop +from heapq import heappop, heappush from itertools import count -from typing import Optional, Callable +from typing import Callable, Optional from skdecide import Domain, Solver, Value from skdecide.builders.domain import ( - SingleAgent, - Sequential, - DeterministicTransitions, Actions, + DeterministicTransitions, + FullyObservable, Goals, Markovian, - FullyObservable, PositiveCosts, + Sequential, + SingleAgent, ) from skdecide.builders.solver import DeterministicPolicies, Utilities diff --git a/skdecide/hub/solver/lrtastar/lrtastar.py b/skdecide/hub/solver/lrtastar/lrtastar.py index 1f5bab1e20..9360dad355 100644 --- a/skdecide/hub/solver/lrtastar/lrtastar.py +++ b/skdecide/hub/solver/lrtastar/lrtastar.py @@ -5,18 +5,18 @@ from __future__ import annotations -from typing import Optional, Callable +from typing import Callable, Optional from skdecide import Domain, Solver, Value from skdecide.builders.domain import ( - SingleAgent, - Sequential, - DeterministicTransitions, Actions, + DeterministicTransitions, + FullyObservable, Goals, Markovian, - FullyObservable, PositiveCosts, + Sequential, + SingleAgent, ) from skdecide.builders.solver import DeterministicPolicies, Utilities diff --git a/skdecide/hub/solver/lrtdp/lrtdp.py b/skdecide/hub/solver/lrtdp/lrtdp.py index 2d17f19deb..38d480b54e 100644 --- a/skdecide/hub/solver/lrtdp/lrtdp.py +++ b/skdecide/hub/solver/lrtdp/lrtdp.py @@ -6,22 +6,21 @@ import os import sys -from typing import Optional, Callable, Dict, Tuple +from typing import Callable, Dict, Optional, Tuple -from skdecide import Domain, Solver -from skdecide import hub -from skdecide.core import Value +from skdecide import Domain, Solver, hub from skdecide.builders.domain import ( - SingleAgent, - Sequential, - UncertainTransitions, Actions, + FullyObservable, Goals, Markovian, - FullyObservable, PositiveCosts, + Sequential, + SingleAgent, + UncertainTransitions, ) -from skdecide.builders.solver import ParallelSolver, DeterministicPolicies, Utilities +from skdecide.builders.solver import DeterministicPolicies, ParallelSolver, Utilities +from skdecide.core import Value record_sys_path = sys.path skdecide_cpp_extension_lib_path = os.path.abspath(hub.__path__[0]) diff --git a/skdecide/hub/solver/mahd/mahd.py b/skdecide/hub/solver/mahd/mahd.py index 1974bc70ad..01b7bca900 100644 --- a/skdecide/hub/solver/mahd/mahd.py +++ b/skdecide/hub/solver/mahd/mahd.py @@ -7,9 +7,9 @@ from typing import Any, Callable, Set, Tuple from skdecide import Domain, Solver -from skdecide.core import Value -from skdecide.builders.domain import MultiAgent, SingleAgent, Sequential +from skdecide.builders.domain import MultiAgent, Sequential, SingleAgent from skdecide.builders.solver import DeterministicPolicies, Utilities +from skdecide.core import Value # TODO: remove Markovian req? diff --git a/skdecide/hub/solver/martdp/martdp.py b/skdecide/hub/solver/martdp/martdp.py index 8713fef05f..02cc4d9e0a 100644 --- a/skdecide/hub/solver/martdp/martdp.py +++ b/skdecide/hub/solver/martdp/martdp.py @@ -6,22 +6,21 @@ import os import sys -from typing import Optional, Callable, Dict, Tuple +from typing import Callable, Dict, Optional, Tuple -from skdecide import Domain, Solver -from skdecide import hub -from skdecide.core import Value +from skdecide import Domain, Solver, hub from skdecide.builders.domain import ( - MultiAgent, - Sequential, - Simulation, Actions, + FullyObservable, Goals, Markovian, - FullyObservable, + MultiAgent, PositiveCosts, + Sequential, + Simulation, ) -from skdecide.builders.solver import ParallelSolver, DeterministicPolicies, Utilities +from skdecide.builders.solver import DeterministicPolicies, ParallelSolver, Utilities +from skdecide.core import Value record_sys_path = sys.path skdecide_cpp_extension_lib_path = os.path.abspath(hub.__path__[0]) diff --git a/skdecide/hub/solver/maxent_irl/maxent_irl.py b/skdecide/hub/solver/maxent_irl/maxent_irl.py index 6cf7899f4d..e513ab9f69 100755 --- a/skdecide/hub/solver/maxent_irl/maxent_irl.py +++ b/skdecide/hub/solver/maxent_irl/maxent_irl.py @@ -12,7 +12,7 @@ import numpy as np import pylab -from skdecide import RLDomain, Solver, D +from skdecide import D, RLDomain, Solver from skdecide.builders.solver import Policies, Restorable from skdecide.hub.solver.cgp import cgp diff --git a/skdecide/hub/solver/mcts/__init__.py b/skdecide/hub/solver/mcts/__init__.py index c9735823d8..0b12c79046 100644 --- a/skdecide/hub/solver/mcts/__init__.py +++ b/skdecide/hub/solver/mcts/__init__.py @@ -2,4 +2,4 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -from .mcts import MCTS, HMCTS, UCT, HUCT +from .mcts import HMCTS, HUCT, MCTS, UCT diff --git a/skdecide/hub/solver/mcts/mcts.py b/skdecide/hub/solver/mcts/mcts.py index 5854b8748b..3a99d69ac0 100644 --- a/skdecide/hub/solver/mcts/mcts.py +++ b/skdecide/hub/solver/mcts/mcts.py @@ -5,25 +5,24 @@ from __future__ import annotations import os -import sys import random as rd +import sys from math import sqrt -from typing import Callable, Dict, Tuple, List +from typing import Callable, Dict, List, Tuple -from skdecide import Domain, Solver -from skdecide import hub -from skdecide.core import Value +from skdecide import Domain, Solver, hub from skdecide.builders.domain import ( - SingleAgent, - Sequential, - Environment, Actions, DeterministicInitialized, - Markovian, + Environment, FullyObservable, + Markovian, Rewards, + Sequential, + SingleAgent, ) -from skdecide.builders.solver import ParallelSolver, DeterministicPolicies, Utilities +from skdecide.builders.solver import DeterministicPolicies, ParallelSolver, Utilities +from skdecide.core import Value record_sys_path = sys.path skdecide_cpp_extension_lib_path = os.path.abspath(hub.__path__[0]) @@ -32,8 +31,8 @@ try: - from __skdecide_hub_cpp import _MCTSSolver_ as mcts_solver from __skdecide_hub_cpp import _MCTSOptions_ as mcts_options + from __skdecide_hub_cpp import _MCTSSolver_ as mcts_solver class D( Domain, diff --git a/skdecide/hub/solver/meta_policy/meta_policies.py b/skdecide/hub/solver/meta_policy/meta_policies.py index d51701c9a2..08f504b6b4 100644 --- a/skdecide/hub/solver/meta_policy/meta_policies.py +++ b/skdecide/hub/solver/meta_policy/meta_policies.py @@ -4,11 +4,11 @@ from __future__ import annotations -from typing import Dict, Any +from typing import Any, Dict from skdecide import rollout_episode +from skdecide.builders.domain.scheduling.scheduling_domains import D, SchedulingDomain from skdecide.builders.solver import DeterministicPolicies -from skdecide.builders.domain.scheduling.scheduling_domains import SchedulingDomain, D class MetaPolicy(DeterministicPolicies): diff --git a/skdecide/hub/solver/pile_policy/pile_policy.py b/skdecide/hub/solver/pile_policy/pile_policy.py index f5ded3d2ba..5dd02d6f31 100644 --- a/skdecide/hub/solver/pile_policy/pile_policy.py +++ b/skdecide/hub/solver/pile_policy/pile_policy.py @@ -4,18 +4,20 @@ from __future__ import annotations +import random +from enum import Enum from typing import Callable -from skdecide.solvers import Solver, DeterministicPolicies + +import networkx as nx +import numpy as np + +from skdecide.builders.domain.scheduling.scheduling_domains import SchedulingDomain from skdecide.builders.domain.scheduling.scheduling_domains_modelling import ( - State, SchedulingAction, SchedulingActionEnum, + State, ) -from skdecide.builders.domain.scheduling.scheduling_domains import SchedulingDomain -from enum import Enum -import numpy as np -import random -import networkx as nx +from skdecide.solvers import DeterministicPolicies, Solver D = SchedulingDomain diff --git a/skdecide/hub/solver/policy_evaluators/policy_evaluator.py b/skdecide/hub/solver/policy_evaluators/policy_evaluator.py index 6ce5ac9139..53594a40de 100644 --- a/skdecide/hub/solver/policy_evaluators/policy_evaluator.py +++ b/skdecide/hub/solver/policy_evaluators/policy_evaluator.py @@ -4,11 +4,12 @@ from __future__ import annotations +from collections import defaultdict +from typing import Any, Dict, List, Set, Tuple + from skdecide import GoalMDPDomain from skdecide.builders.domain.scheduling.scheduling_domains import SchedulingDomain from skdecide.builders.solver.policy import DeterministicPolicies -from collections import defaultdict -from typing import Tuple, Dict, Any, Set, List # Adapted from skdecide/hub/solver/cssp/utils/cost_shift_solver.py works. diff --git a/skdecide/hub/solver/pomcp/pomcp.py b/skdecide/hub/solver/pomcp/pomcp.py index fb1a8604cd..a54b6300e8 100644 --- a/skdecide/hub/solver/pomcp/pomcp.py +++ b/skdecide/hub/solver/pomcp/pomcp.py @@ -11,13 +11,13 @@ import random from typing import Callable -from skdecide import Domain, Solver, Memory, DiscreteDistribution +from skdecide import DiscreteDistribution, Domain, Memory, Solver from skdecide.builders.domain import ( - SingleAgent, - Sequential, - EnumerableTransitions, Actions, + EnumerableTransitions, Goals, + Sequential, + SingleAgent, UncertainInitialized, ) from skdecide.builders.solver import DeterministicPolicies diff --git a/skdecide/hub/solver/ray_rllib/ray_rllib.py b/skdecide/hub/solver/ray_rllib/ray_rllib.py index 9b05dec70e..550cf5d0f7 100644 --- a/skdecide/hub/solver/ray_rllib/ray_rllib.py +++ b/skdecide/hub/solver/ray_rllib/ray_rllib.py @@ -6,7 +6,7 @@ import glob import os -from typing import Optional, Callable, Type, Dict +from typing import Callable, Dict, Optional, Type import ray from ray.rllib.agents.trainer import Trainer @@ -15,10 +15,10 @@ from skdecide import Domain, Solver from skdecide.builders.domain import ( - SingleAgent, + Initializable, Sequential, + SingleAgent, UnrestrictedActions, - Initializable, ) from skdecide.builders.solver import Policies, Restorable from skdecide.hub.space.gym import GymSpace @@ -201,6 +201,7 @@ def unwrapped(self): if __name__ == "__main__": from ray.rllib.agents.ppo import PPOTrainer + from skdecide.hub.domain.rock_paper_scissors import RockPaperScissors from skdecide.utils import rollout diff --git a/skdecide/hub/solver/riw/riw.py b/skdecide/hub/solver/riw/riw.py index faf8eea1aa..c343fcd296 100644 --- a/skdecide/hub/solver/riw/riw.py +++ b/skdecide/hub/solver/riw/riw.py @@ -6,21 +6,20 @@ import os import sys -from typing import Callable, Dict, List, Any, Tuple +from typing import Any, Callable, Dict, List, Tuple -from skdecide import Domain, Solver -from skdecide import hub +from skdecide import Domain, Solver, hub from skdecide.builders.domain import ( - SingleAgent, - Sequential, - Environment, Actions, DeterministicInitialized, - Markovian, + Environment, FullyObservable, + Markovian, Rewards, + Sequential, + SingleAgent, ) -from skdecide.builders.solver import ParallelSolver, DeterministicPolicies, Utilities +from skdecide.builders.solver import DeterministicPolicies, ParallelSolver, Utilities record_sys_path = sys.path skdecide_cpp_extension_lib_path = os.path.abspath(hub.__path__[0]) diff --git a/skdecide/hub/solver/sgs_policies/sgs_policies.py b/skdecide/hub/solver/sgs_policies/sgs_policies.py index 94dca80047..cc6251660b 100644 --- a/skdecide/hub/solver/sgs_policies/sgs_policies.py +++ b/skdecide/hub/solver/sgs_policies/sgs_policies.py @@ -4,21 +4,22 @@ from __future__ import annotations -from typing import Union, List, Dict, Optional -from skdecide.builders.solver.policy import DeterministicPolicies -from skdecide.builders.domain.scheduling.scheduling_domains_modelling import ( - State, - SchedulingAction, - SchedulingActionEnum, -) +from enum import Enum +from functools import partial +from typing import Dict, List, Optional, Union + from skdecide.builders.domain.scheduling.scheduling_domains import ( - SchedulingDomain, D, MultiModeRCPSP, + SchedulingDomain, SingleModeRCPSP, ) -from enum import Enum -from functools import partial +from skdecide.builders.domain.scheduling.scheduling_domains_modelling import ( + SchedulingAction, + SchedulingActionEnum, + State, +) +from skdecide.builders.solver.policy import DeterministicPolicies class BasePolicyMethod(Enum): diff --git a/skdecide/hub/solver/simple_greedy/simple_greedy.py b/skdecide/hub/solver/simple_greedy/simple_greedy.py index d5d59cc7dc..52ac6bdab9 100644 --- a/skdecide/hub/solver/simple_greedy/simple_greedy.py +++ b/skdecide/hub/solver/simple_greedy/simple_greedy.py @@ -6,8 +6,8 @@ from typing import Callable -from skdecide import Domain, DeterministicPolicySolver, Memory, EnumerableSpace -from skdecide.builders.domain import SingleAgent, EnumerableTransitions, FullyObservable +from skdecide import DeterministicPolicySolver, Domain, EnumerableSpace, Memory +from skdecide.builders.domain import EnumerableTransitions, FullyObservable, SingleAgent class D(Domain, SingleAgent, EnumerableTransitions, FullyObservable): diff --git a/skdecide/hub/solver/stable_baselines/stable_baselines.py b/skdecide/hub/solver/stable_baselines/stable_baselines.py index 0f6527d159..9ab3ae7922 100644 --- a/skdecide/hub/solver/stable_baselines/stable_baselines.py +++ b/skdecide/hub/solver/stable_baselines/stable_baselines.py @@ -4,16 +4,16 @@ from __future__ import annotations -from typing import Callable, Any, Dict +from typing import Any, Callable, Dict from stable_baselines3.common.vec_env import DummyVecEnv from skdecide import Domain, Solver from skdecide.builders.domain import ( - SingleAgent, + Initializable, Sequential, + SingleAgent, UnrestrictedActions, - Initializable, ) from skdecide.builders.solver import Policies, Restorable from skdecide.hub.domain.gym import AsGymEnv diff --git a/skdecide/hub/space/gym/__init__.py b/skdecide/hub/space/gym/__init__.py index e053619a6d..47524700ba 100644 --- a/skdecide/hub/space/gym/__init__.py +++ b/skdecide/hub/space/gym/__init__.py @@ -3,14 +3,14 @@ # LICENSE file in the root directory of this source tree. from .gym import ( - GymSpace, BoxSpace, - DiscreteSpace, - MultiDiscreteSpace, - MultiBinarySpace, - TupleSpace, + DataSpace, DictSpace, + DiscreteSpace, EnumSpace, + GymSpace, ListSpace, - DataSpace, + MultiBinarySpace, + MultiDiscreteSpace, + TupleSpace, ) diff --git a/skdecide/hub/space/gym/gym.py b/skdecide/hub/space/gym/gym.py index a459fe842c..24ddddd933 100644 --- a/skdecide/hub/space/gym/gym.py +++ b/skdecide/hub/space/gym/gym.py @@ -4,15 +4,15 @@ from __future__ import annotations +from dataclasses import asdict from enum import EnumMeta -from typing import Union, Generic, Iterable, Sequence, Tuple, List, Dict +from typing import Dict, Generic, Iterable, List, Sequence, Tuple, Union import gym import gym.spaces as gym_spaces import numpy as np -from skdecide import T, EnumerableSpace, SamplableSpace, SerializableSpace -from dataclasses import asdict +from skdecide import EnumerableSpace, SamplableSpace, SerializableSpace, T class GymSpace(Generic[T], SamplableSpace[T], SerializableSpace[T]): diff --git a/skdecide/solvers.py b/skdecide/solvers.py index c8ea6f462b..9b964c059f 100644 --- a/skdecide/solvers.py +++ b/skdecide/solvers.py @@ -5,11 +5,11 @@ """This module contains base classes for quickly building solvers.""" from __future__ import annotations -from typing import List, Callable +from typing import Callable, List +from skdecide.builders.solver.policy import DeterministicPolicies from skdecide.core import D, autocast_all, autocastable from skdecide.domains import Domain -from skdecide.builders.solver.policy import DeterministicPolicies __all__ = ["Solver", "DeterministicPolicySolver"] diff --git a/skdecide/utils.py b/skdecide/utils.py index 91b05616b3..3601bc62b9 100644 --- a/skdecide/utils.py +++ b/skdecide/utils.py @@ -5,27 +5,27 @@ """This module contains utility functions.""" from __future__ import annotations -import re -import time -import simplejson as json -import os import copy -import logging import datetime -from typing import Any, Union, Optional, Type, Iterable, Tuple, List, Dict, Callable +import logging +import os +import re +import time +from typing import Any, Callable, Dict, Iterable, List, Optional, Tuple, Type, Union -from pkg_resources import iter_entry_points, EntryPoint, DistributionNotFound +import simplejson as json +from pkg_resources import DistributionNotFound, EntryPoint, iter_entry_points from skdecide import ( + D, Domain, + EnvironmentOutcome, Solver, - D, Space, - EnvironmentOutcome, autocast_all, autocastable, ) -from skdecide.builders.domain import Goals, Markovian, Renderable, FullyObservable +from skdecide.builders.domain import FullyObservable, Goals, Markovian, Renderable from skdecide.builders.solver import Policies __all__ = [ diff --git a/tests/scheduling/test_scheduling.py b/tests/scheduling/test_scheduling.py index d7d9595534..4d8109f8a7 100644 --- a/tests/scheduling/test_scheduling.py +++ b/tests/scheduling/test_scheduling.py @@ -1,52 +1,51 @@ +import random +from enum import Enum +from typing import Any, Dict, List, Optional, Set, Union + import pytest -from enum import Enum -from typing import Dict, List, Any, Optional, Union, Set -import random +from skdecide import DiscreteDistribution, Distribution, rollout_episode +from skdecide.builders.domain.scheduling.conditional_tasks import ( + WithoutConditionalTasks, +) +from skdecide.builders.domain.scheduling.modes import ( + ConstantModeConsumption, + ModeConsumption, +) +from skdecide.builders.domain.scheduling.preemptivity import WithoutPreemptivity +from skdecide.builders.domain.scheduling.resource_availability import ( + DeterministicResourceAvailabilityChanges, +) from skdecide.builders.domain.scheduling.scheduling_domains import ( - SingleModeRCPSP, + MultiModeMultiSkillRCPSP, + MultiModeRCPSPWithCost, + SchedulingAction, SchedulingObjectiveEnum, + SingleModeRCPSP, + SingleModeRCPSP_Simulated_Stochastic_Durations_WithConditionalTasks, SingleModeRCPSP_Stochastic_Durations, SingleModeRCPSP_Stochastic_Durations_WithConditionalTasks, - SingleModeRCPSP_Simulated_Stochastic_Durations_WithConditionalTasks, - MultiModeRCPSPWithCost, - MultiModeMultiSkillRCPSP, State, - SchedulingAction, -) -from skdecide import Distribution, DiscreteDistribution - -from skdecide.builders.domain.scheduling.modes import ( - ModeConsumption, - ConstantModeConsumption, ) -from skdecide.builders.domain.scheduling.preemptivity import WithoutPreemptivity from skdecide.builders.domain.scheduling.scheduling_domains_modelling import ( SchedulingActionEnum, ) from skdecide.builders.domain.scheduling.task_duration import DeterministicTaskDuration -from skdecide.builders.domain.scheduling.conditional_tasks import ( - WithoutConditionalTasks, -) -from skdecide.builders.domain.scheduling.resource_availability import ( - DeterministicResourceAvailabilityChanges, -) -from skdecide import rollout_episode from skdecide.discrete_optimization.generic_tools.cp_tools import CPSolverName from skdecide.hub.domain.rcpsp.rcpsp_sk import ( - RCPSP, MRCPSP, + RCPSP, build_n_determinist_from_stochastic, ) -from skdecide.hub.solver.graph_explorer.DFS_Uncertain_Exploration import DFSExploration from skdecide.hub.solver.do_solver.do_solver_scheduling import ( + BasePolicyMethod, DOSolver, PolicyMethodParams, SolvingMethod, - BasePolicyMethod, ) -from skdecide.hub.solver.lazy_astar import LazyAstar from skdecide.hub.solver.gphh.gphh import GPHH, ParametersGPHH +from skdecide.hub.solver.graph_explorer.DFS_Uncertain_Exploration import DFSExploration +from skdecide.hub.solver.lazy_astar import LazyAstar optimal_solutions = { "ToyRCPSPDomain": {"makespan": 10}, diff --git a/tests/solvers/cpp/parallelism/test_parallel_deterministic_algorithms.py b/tests/solvers/cpp/parallelism/test_parallel_deterministic_algorithms.py index b797ef62d6..93e75305e4 100644 --- a/tests/solvers/cpp/parallelism/test_parallel_deterministic_algorithms.py +++ b/tests/solvers/cpp/parallelism/test_parallel_deterministic_algorithms.py @@ -2,25 +2,25 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -from tqdm import tqdm +from collections import namedtuple from enum import Enum -from typing import NamedTuple, Optional from math import sqrt +from typing import NamedTuple, Optional + from pathos.helpers import mp -from collections import namedtuple +from tqdm import tqdm from skdecide import ( DeterministicPlanningDomain, - Value, - Value, - Space, EnvironmentOutcome, + Space, TransitionOutcome, + Value, ) from skdecide.builders.domain import Actions -from skdecide.hub.space.gym import ListSpace, EnumSpace, MultiDiscreteSpace -from skdecide.utils import load_registered_solver, rollout from skdecide.hub.solver.mcts.mcts import MCTS +from skdecide.hub.space.gym import EnumSpace, ListSpace, MultiDiscreteSpace +from skdecide.utils import load_registered_solver, rollout class State(NamedTuple): diff --git a/tests/solvers/cpp/parallelism/test_parallel_probabilistic_algorithms.py b/tests/solvers/cpp/parallelism/test_parallel_probabilistic_algorithms.py index be61988e3a..43d75ac6b4 100644 --- a/tests/solvers/cpp/parallelism/test_parallel_probabilistic_algorithms.py +++ b/tests/solvers/cpp/parallelism/test_parallel_probabilistic_algorithms.py @@ -2,26 +2,26 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -from tqdm import tqdm +from collections import namedtuple from enum import Enum -from typing import NamedTuple, Optional from math import sqrt +from typing import NamedTuple, Optional + from pathos.helpers import mp -from collections import namedtuple +from tqdm import tqdm from skdecide import ( - GoalMDPDomain, - Value, - Value, - Space, DiscreteDistribution, EnvironmentOutcome, + GoalMDPDomain, + Space, TransitionOutcome, + Value, ) from skdecide.builders.domain import Actions -from skdecide.hub.space.gym import ListSpace, EnumSpace, MultiDiscreteSpace -from skdecide.utils import load_registered_solver, rollout from skdecide.hub.solver.mcts.mcts import MCTS +from skdecide.hub.space.gym import EnumSpace, ListSpace, MultiDiscreteSpace +from skdecide.utils import load_registered_solver, rollout class State(NamedTuple): diff --git a/tests/solvers/cpp/test_cpp_solvers.py b/tests/solvers/cpp/test_cpp_solvers.py index 64b637ef60..247e1df108 100644 --- a/tests/solvers/cpp/test_cpp_solvers.py +++ b/tests/solvers/cpp/test_cpp_solvers.py @@ -4,24 +4,23 @@ from __future__ import annotations -import pytest import inspect - +from copy import deepcopy from enum import Enum -from typing import NamedTuple, Optional from math import sqrt -from copy import deepcopy +from typing import NamedTuple, Optional + +import pytest from pathos.helpers import mp from skdecide import ( DeterministicPlanningDomain, - Value, - Value, - Space, - ImplicitSpace, EnvironmentOutcome, - TransitionOutcome, + ImplicitSpace, SingleValueDistribution, + Space, + TransitionOutcome, + Value, ) from skdecide.builders.domain import UnrestrictedActions from skdecide.hub.space.gym import EnumSpace, MultiDiscreteSpace diff --git a/tests/solvers/python/test_python_solvers.py b/tests/solvers/python/test_python_solvers.py index 81341492d6..eda1d8a81f 100644 --- a/tests/solvers/python/test_python_solvers.py +++ b/tests/solvers/python/test_python_solvers.py @@ -4,14 +4,14 @@ from __future__ import annotations -import pytest - +from copy import deepcopy from enum import Enum from typing import NamedTuple, Optional + +import pytest from stable_baselines3 import PPO -from copy import deepcopy -from skdecide import DeterministicPlanningDomain, Value, Value, Space, ImplicitSpace +from skdecide import DeterministicPlanningDomain, ImplicitSpace, Space, Value from skdecide.builders.domain import UnrestrictedActions from skdecide.hub.space.gym import EnumSpace, MultiDiscreteSpace from skdecide.utils import load_registered_solver