# 1QBit provider

- Publisher: 1QBit
- Provider ID:
`1qbit`

## Targets

### Tabu Search Solver

An iterative heuristic algorithm that uses local search techniques to solve a QUBO problem. It starts from a random solution and looks for an improved solution in the solution's neighborhood that includes all possible single flips. The algorithm stops when it reaches a stopping criterion, such as a specified number of consecutive iterations without improvement.

Note

If you are not using the *azure-quantum* Python package, parameter values are required to be of JSON string type. The types listed here are the types that the solvers expect within the string value. For example, `improvement_cutoff`

is listed as type int, and is expected to be passed in the format:

**improvement_cutoff: "5"**

- Job type:
`Quantum-Inspired Optimization Problem`

- Data Format:
`microsoft.qio.v2`

- Target ID:
`1qbit.tabu`

- Python Solver class name:
`TabuSearch`

Parameter Name | Type | Required | Description |
---|---|---|---|

`improvement_cutoff` |
int | Optional | The number of iterations that the solver attempts with no improvement before stopping. Default: 0 |

`improvement_tolerance` |
double | Optional | The tolerance value that determines if a solution is an improvement over the previous iteration. Default: 1e-9 |

`seed` |
int | Optional | The seed in the random number generator to control for deterministic results. Default: a random integer |

`tabu_tenure` |
int | Optional | The tenure prevents a flipped variable from being flipped again during the iterations. Default: 0 |

`tabu_tenure_rand_max` |
int | Optional | The upper limit of the exclusive range of random integers. Valid value range: 1 to 200,000. Default: 0 |

`timeout` |
int | Optional | The duration in ms the solver runs before exiting. If the value is set to 0, it does not time out. Default: 0 |

### PTICM Solver

The parallel tempering with isoenergetic cluster moves (PTICM) solver is a Monte Carlo approach to solving QUBO problems. In this algorithm, multiple replicas of the original system, each with a different initial state, are simulated at different temperatures simultaneously. The replicas at neighboring temperatures are periodically swapped based on a Metropolis criterion. These swaps allow different replicas to do a random walk in the temperature space, thereby, efficiently overcoming energy barriers.

Note

If you are not using the *azure-quantum* Python package, parameter values are required to be of JSON string type. The types listed here are the types that the solvers expect within the string value. For example, `frac_icm_thermal_layers`

is listed as type double, and is expected to be passed in the format:

**frac_icm_thermal_layers: "0.5"**

- Job type:
`Quantum-Inspired Optimization Problem`

- Data Format:
`microsoft.qio.v2`

- Target ID:
`1qbit.pticm`

- Python Solver class name:
`PticmSolver`

Parameter Name | Type | Required | Description |
---|---|---|---|

auto_set_temperatures | boolean | Optional | This defines whether the temperature parameters are auto-calculated or not. Set it to True for auto-calculating and False for customizing the temperature parameters. Default: True |

elite_threshold | double | Optional | The fraction of the best solutions used for the var_fixing_type parameter with value SPVAR. Default: 0.3 |

frac_icm_thermal_layers | double | Optional | The fraction of temperatures for the iso-energetic cluster moves. Default: 0.5 |

frac_sweeps_fixing | double | Optional | The fraction of sweeps used for fixing the QUBO variables. Default: 0.15 |

frac_sweeps_idle | double | Optional | The fraction of sweeps to wait before fixing the QUBO variables. Default: 1.0 |

frac_sweeps_stagnation | double | Optional | The fraction of sweeps without improvement that triggers a restart. Default: 1.0 |

goal | string | Optional | This defines whether the solver is used for optimizing or sampling. Valid values: "OPTIMIZE" or "SAMPLE" Default: OPTIMIZE |

high_temp | double | Optional | The highest temperature of a replica. Set the auto_set_temperatures parameter to False to use this feature. Default: 2 |

low_temp | double | Optional | The lowest temperature of a replica. Set the auto_set_temperatures parameter to False to use this feature. Default: 0.2 |

max_samples_per_layer | int | Optional | The maximum number of samples collected per replica. Default: 10 |

max_total_sweeps | int | Optional | The total number of sweeps before termination. Default: num_sweeps_per_run * 10 |

manual_temperatures | array[double] | Optional | An array of a custom temperature schedule which includes the high and low temperature values for the replicas. Set the auto_set_temperatures parameter to False to use this feature. |

num_elite_temps | int | Optional | The number of elite temperatures used for fixing the variables with persistency. Default = 4 |

num_replicas | int | Optional | The number of replicas at each temperature. Default: 2 |

num_sweeps_per_run | int | Optional | The number of Monte Carlo sweeps. Default: 100 |

num_temps | int | Optional | The number of temperatures including the highest and the lowest temperatures. Set the auto_set_temperatures parameter to False to use this feature. Default: 30 |

scaling_type | string | Optional | This defines whether the QUBO problem is automatically scaled or not. MEDIAN means it's automatically scaled, and NO_SCALING means it's not. Valid values: "MEDIAN" or "NO_SCALING" |

seed | int | Optional | The seed in the random number generator to control for deterministic results. Default: a random integer |

var_fixing_type | string | Optional | This decides whether the values of QUBO variables are fixed or not. You can fix them with PERSISTENCY or SPVAR types. NO_FIXING means the variables are not fixed. If you choose PERSISTENCY or SPVAR, also set the solver.frac_sweeps_fixing and solver.frac_sweeps_idle parameters to a number less than one. Valid values: "PERSISTENCY", "SPVAR" or "NO_FIXING" Default: NO_FIXING |

### Path-Relinking Solver

The path-relinking algorithm is a heuristic algorithm that uses the tabu search as a subroutine to solve a QUBO problem. The algorithm starts from a set of elite solutions found by the tabu search. It then constructs a path between each pair of elite solutions, selects one of the solutions along the path, and repeats the tabu search. If the tabu search finds a distinct solution that is better than the current worst elite solution, the elite solutions set is updated with the new improved solution. This whole procedure is repeated until the algorithm meets a stopping condition.

Note

If not using the *azure-quantum* Python package, parameter values are required to be of JSON string type. The types listed here are the types that the solvers expect within the string value. For example, `greedy_path_relinking`

is listed as type boolean, and is expected to be passed in the format:

**greedy_path_relinking: "False"**

- Job type:
`Quantum-Inspired Optimization Problem`

- Data Format:
`microsoft.qio.v2`

- Target ID:
`1qbit.pathrelinking`

- Python Solver class name:
`PathRelinkingSolver`

Parameter Name | Type | Required | Description |
---|---|---|---|

distance_scale | double | Optional | The minimum distance from the initiating and guiding solutions for constructing the candidate solution list. The highest quality solution in the candidate solution list is then selected for improvement. Valid values: 0.0 to 0.5 Default 0.33 |

greedy_path_relinking | boolean | Optional | When you use the path-relinking solver there are two ways you can generate a path that leads to the solution: one is the greedy function and the other operates in a random matter. If you set the this parameter to true, the solver will use the greedy function. If you set it to false, it will use the random method. Default: false |

ref_set_count | int | Optional | The number of initial elite solutions to be generated by the tabu search algorithm. Valid values: Greater than 1 Default: 10 |

seed | int | Optional | The seed in the random number generator to control for deterministic results. Default: a random integer |

timeout | int | Optional | The duration in ms the solver runs before exiting. If the value is set to 0, it does not time out. If a value is not specified, the solver uses the default value or estimates a new one based on the input problem. Estimated values are marked as "(COMPUTED)". Default: 0 |

## Pricing

To see 1QBit billing plan, visit Azure Quantum pricing.

## Feedback

Submit and view feedback for