qgym packageο
The qgym package consist of gyms and tools used for reinforcement learning (RL) environments in the Quantum domain. Itβs main purpose is to easily create RL environments for the different passes of the OpenQL framework, by simply initializing an environment class. This abstraction of the environment allows RL developers to develop RL agents to improve the OpenQL framework, without requiring prior knowledge of OpenQL.
Example
We want to create an environment for the OpenQL pass of initial mapping for a system
with a QPU topology of 3x3. Using the qgym
package this becomes:
from qgym.envs import InitialMapping
env = InitialMapping(0.5, connection_grid_size=(3,3))
We can then use the environment in the code block above to train a stable baseline RL agent using the following code:
from stable_baselines3 import PPO
model = PPO("MultiInputPolicy", env, verbose=1)
model.learn(int(1e5))
- qgym.envs package
InitialMapping
Routing
Scheduling
- qgym.envs.initial_mapping package
BasicRewarder
EpisodeRewarder
InitialMapping
InitialMappingState
InitialMappingState.__init__()
InitialMappingState.create_observation_space()
InitialMappingState.graphs
InitialMappingState.is_done()
InitialMappingState.is_truncated()
InitialMappingState.mapped_qubits
InitialMappingState.mapping
InitialMappingState.mapping_dict
InitialMappingState.n_nodes
InitialMappingState.obtain_info()
InitialMappingState.obtain_observation()
InitialMappingState.reset()
InitialMappingState.steps_done
InitialMappingState.update_state()
SingleStepRewarder
- qgym.envs.initial_mapping.initial_mapping module
- qgym.envs.initial_mapping.initial_mapping_rewarders module
- qgym.envs.initial_mapping.initial_mapping_state module
- qgym.envs.initial_mapping.initial_mapping_visualiser module
- qgym.envs.routing package
BasicRewarder
EpisodeRewarder
Routing
RoutingState
RoutingState.__init__()
RoutingState.connection_graph
RoutingState.create_observation_space()
RoutingState.edges
RoutingState.interaction_circuit
RoutingState.interaction_generator
RoutingState.is_done()
RoutingState.is_legal_surpass()
RoutingState.mapping
RoutingState.max_observation_reach
RoutingState.n_connections
RoutingState.n_qubits
RoutingState.obtain_info()
RoutingState.obtain_observation()
RoutingState.position
RoutingState.reset()
RoutingState.steps_done
RoutingState.swap_gates_inserted
RoutingState.update_state()
SwapQualityRewarder
- qgym.envs.routing.routing module
- qgym.envs.routing.routing_rewarders module
- qgym.envs.routing.routing_state module
- qgym.envs.routing.routing_visualiser module
- qgym.envs.scheduling package
BasicRewarder
CommutationRulebook
EpisodeRewarder
MachineProperties
MachineProperties.__init__()
MachineProperties.__repr__()
MachineProperties.__str__()
MachineProperties.add_gates()
MachineProperties.add_not_in_same_cycle()
MachineProperties.add_same_start()
MachineProperties.encode()
MachineProperties.from_file()
MachineProperties.from_mapping()
MachineProperties.gates
MachineProperties.n_gates
MachineProperties.n_qubits
MachineProperties.not_in_same_cycle
MachineProperties.same_start
Scheduling
SchedulingState
SchedulingState.__init__()
SchedulingState.busy
SchedulingState.circuit_info
SchedulingState.create_observation_space()
SchedulingState.cycle
SchedulingState.gates
SchedulingState.is_done()
SchedulingState.machine_properties
SchedulingState.obtain_info()
SchedulingState.obtain_observation()
SchedulingState.reset()
SchedulingState.steps_done
SchedulingState.update_state()
SchedulingState.utils
- qgym.envs.scheduling.machine_properties module
- qgym.envs.scheduling.rulebook module
- qgym.envs.scheduling.scheduling module
- qgym.envs.scheduling.scheduling_dataclasses module
- qgym.envs.scheduling.scheduling_rewarders module
- qgym.envs.scheduling.scheduling_state module
- qgym.envs.scheduling.scheduling_visualiser module
- qgym.generators package
BasicCircuitGenerator
BasicGraphGenerator
BasicInteractionGenerator
NullCircuitGenerator
NullGraphGenerator
NullInteractionGenerator
WorkshopCircuitGenerator
- qgym.generators.circuit module
- qgym.generators.graph module
- qgym.generators.interaction module
- qgym.spaces package
- qgym.templates package
- qgym.utils package