dual_objective_value(model) is equivalent to querying the MOI.DualObjectiveValue attribute. This attribute returns the objective value of the dual problem.
Here’s the code:
Because Gurobi doesn’t provide access to the dual objective value, we manually compute it based on the constraint duals.
Inspired by a recent post where an LP is solved to suboptimality, I think it makes some sense to have relative gap/feasible solution/objective bound for LPs also. But it seems that Gurobi only has MIPGap, not applied to LPs. (no more comments unless I find that more needs are required in the future.)
I believe we can make the information of solution_summary richer.