modules.solvers.mip_solver_bp.MIPSolver
- class MIPSolver
Bases:
SolverQAOA with some parts copied/derived from https://github.com/aws/amazon-braket-examples.
- __init__()
Constructor method
Methods
__init__()Constructor method
Gets the list of available options.
get_available_submodules(option)If the module has submodules depending on certain options, this method should adjust the submodule_options accordingly.
get_default_submodule(option)Returns the default submodule based on the provided option.
get_depending_parameters(option, config)If the module has parameters depending on certain options, this method should return the parameters for the given option.
Returns the configurable settings for this solver.
Return requirements of this module.
get_submodule(option)Submodule is instantiated according to the information given in self.sub_options.
postprocess(input_data, config, **kwargs)The actual solving process is done here, using the device which is provided by the device submodule and the problem data provided by the parent module.
preprocess(input_data, config, **kwargs)Essential method for the benchmarking process.
run(mapped_problem, device_wrapper, config, ...)Run MIP-solver on an optimization problem.
- class Config
Bases:
TypedDictAttributes of a valid config.
shots: int opt_method: str depth: int
- clear() None. Remove all items from D.
- copy() a shallow copy of D
- fromkeys(value=None, /)
Create a new dictionary with keys from iterable and values set to value.
- get(key, default=None, /)
Return the value for key if key is in the dictionary, else default.
- items() a set-like object providing a view on D's items
- keys() a set-like object providing a view on D's keys
- pop(k[, d]) v, remove specified key and return the corresponding value.
If the key is not found, return the default if given; otherwise, raise a KeyError.
- popitem()
Remove and return a (key, value) pair as a 2-tuple.
Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.
- setdefault(key, default=None, /)
Insert key with a value of default if key is not in the dictionary.
Return the value for key if key is in the dictionary, else default.
- update([E, ]**F) None. Update D from mapping/iterable E and F.
If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
- values() an object providing a view on D's values
- get_available_submodule_options() list
Gets the list of available options.
- Returns:
List of module options
- get_available_submodules(option: list) list
If the module has submodules depending on certain options, this method should adjust the submodule_options accordingly.
- Parameters:
option -- List of chosen options
- Returns:
List of available submodules
- get_default_submodule(option: str) Core
Returns the default submodule based on the provided option.
- Parameters:
option -- Option specifying the submodule
- Returns:
Instance of the corresponding submodule
- Raises:
NotImplementedError -- If the option is not recognized
- get_depending_parameters(option: str, config: dict) dict
If the module has parameters depending on certain options, this method should return the parameters for the given option.
- Parameters:
option -- The chosen option
config -- Current config dictionary
- Returns:
The parameters for the given option
- get_parameter_options() dict
Returns the configurable settings for this solver.
- Returns:
return { "mip_gap": { # number measurements to make on circuit "values": [0], #default value 0 means optimal solution is required "description": "What MIP-Gap do you allow?" }, "solution_method": { "values": [-1], # for gurobi: -1=default automatic, 0=primal simplex, 1=dual simplex, 2=barrier, 3=concurrent, 4=deterministic concurrent, 5=deterministic concurrent simplex "description": "Which optimization method do you want?" }, "time_limit": { "values": [60*60*2], # default value: 2 hours "description": "How much time may the solving take?" } }
- static get_requirements() list[dict]
Return requirements of this module.
- Returns:
List of dict with requirements of this module
- get_submodule(option: str) Core
Submodule is instantiated according to the information given in self.sub_options. If self.sub_options is None, get_default_submodule is called as a fallback.
- Parameters:
option -- String with the options
- Returns:
Instance of a module
- postprocess(input_data: any, config: dict, **kwargs) tuple[any, float]
The actual solving process is done here, using the device which is provided by the device submodule and the problem data provided by the parent module.
- Parameters:
input_data -- Data passed to the run function of the solver
config -- Solver config
kwargs -- Optional keyword arguments
- Returns:
Output and time needed
- preprocess(input_data: any, config: dict, **kwargs) tuple[any, float]
Essential method for the benchmarking process. This is always executed before traversing down to the next module, passing the data returned by this function.
- Parameters:
input_data -- Data for the module, comes from the parent module if that exists
config -- Config for the module
kwargs -- Optional keyword arguments
- Returns:
The output of the preprocessing and the time it took to preprocess
- run(mapped_problem: any, device_wrapper: any, config: Config, **kwargs: dict) tuple[dict, float, dict]
Run MIP-solver on an optimization problem.
- Parameters:
mapped_problem -- Optimization problem
device_wrapper -- Instance of device
config -- Configuration parameters for the solver
kwargs -- No additionally settings needed
- Returns:
Tuple consisting of solution and the time it took to compute it and additional solution information