I have a scheduling problem in python where the log reveals that most solutions are found with the "no_lp" sub_solver. This is good and progresses quickly, but it starts very far away from the optimal solution. A more traditional (CHOOSE_LOWEST_MIN, SELECT_MIN_VALUE) fixed search jumps immediately to a near-optimal solution, but then doesn't improve to optimality as quickly.
Q1: Given 8 virtual cores, is it possible in python to specify to use "no_lp" on 4, and fixed_search on 4? If so, how?
Q2: It's been a while since I used the portfolio of sub-solvers and I see things have changed since then. When viewing the log with 8 search workers it lists more than 8 sub-solvers [ default_lp, fixed, pseudo_costs, no_lp, max_lp, feasibility_pump, rnd_var_lns_default, rnd_cst_lns_default, graph_var_lns_default, graph_cst_lns_default, scheduling_time_window_lns_default, scheduling_random_lns_default, rins_lns_default, rens_lns_default ]. search_branching is set to FIXED_SEARCH, so I don't have portfolio-based search enabled nor interleaved-search yet all of these sub-solvers are definitely running periodically since they'll return the occasional intermediate solution. Are they cycled based upon conflicts/restarts, and which parameter controls this?