use crate::branchbound::BBSolver;
use crate::persistence::compute_iterative_persistence;
use crate::qubo::Qubo;
use crate::solver_options::SolverOptions;
use ndarray::Array1;
use std::collections::HashMap;
pub fn solve_kopt(
qubo: &Qubo,
fixed_variables: &HashMap<usize, usize>,
initial_guess: Option<Array1<usize>>,
) -> Array1<usize> {
let mut persistent = fixed_variables.clone();
persistent = compute_iterative_persistence(qubo, &persistent, 100);
let reduced_qubo = qubo.clone();
let mut options = SolverOptions::new();
options.fixed_variables = persistent;
let mut solver = BBSolver::new(reduced_qubo, options);
if let Some(x_0) = initial_guess {
solver.warm_start(x_0);
}
solver.solve();
solver.best_solution
}