| 1327 | } |
| 1328 | |
| 1329 | bool computeDualObjectiveValue(const HighsModel& model, |
| 1330 | const HighsSolution& solution, |
| 1331 | double& dual_objective_value) { |
| 1332 | const HighsLp& lp = model.lp_; |
| 1333 | if (!model.isQp()) |
| 1334 | return computeDualObjectiveValue(nullptr, lp, solution, |
| 1335 | dual_objective_value); |
| 1336 | assert(solution.col_value.size() == static_cast<size_t>(lp.num_col_)); |
| 1337 | // Model is QP, so compute gradient Qx + c so generic |
| 1338 | // computeDualObjectiveValue can be used |
| 1339 | std::vector<double> gradient; |
| 1340 | model.objectiveGradient(solution.col_value, gradient); |
| 1341 | return computeDualObjectiveValue(gradient.data(), lp, solution, |
| 1342 | dual_objective_value); |
| 1343 | } |
| 1344 | |
| 1345 | bool computeDualObjectiveValue(const double* gradient, const HighsLp& lp, |
| 1346 | const HighsSolution& solution, |
no test coverage detected