| 28 | } |
| 29 | |
| 30 | bool UnopyUserCallbacks::termination(const Vector<double>& primals, const Multipliers& multipliers, |
| 31 | double objective_multiplier, double primal_feasibility_residual, double stationarity_residual, |
| 32 | double complementarity_residual) { |
| 33 | if (this->termination_callback.has_value()) { |
| 34 | const auto primals_py = to_const_array(primals.data(), primals.size()); |
| 35 | const auto lower_bound_multipliers_py = to_const_array(multipliers.lower_bounds.data(), multipliers.lower_bounds.size()); |
| 36 | const auto upper_bound_multipliers_py = to_const_array(multipliers.upper_bounds.data(), multipliers.upper_bounds.size()); |
| 37 | const auto constraint_multipliers_py = to_const_array(multipliers.constraints.data(), multipliers.constraints.size()); |
| 38 | return (*this->termination_callback)(primals_py, lower_bound_multipliers_py, upper_bound_multipliers_py, |
| 39 | constraint_multipliers_py, objective_multiplier, primal_feasibility_residual, stationarity_residual, |
| 40 | complementarity_residual); |
| 41 | } |
| 42 | return false; |
| 43 | } |
| 44 | |
| 45 | UnoSolverWrapper::UnoSolverWrapper() { |
| 46 | DefaultOptions::load(this->options); |
nothing calls this directly
no test coverage detected