|
Gecode 6.4.0
|
#include < -- improving gecode/implementation/gecode/gecode/optimize/result.hpp>
Public Member Functions | |
| bool | has_solution () const noexcept |
| double | value (Variable variable) const |
| void | update_gaps (ObjectiveSense sense) |
Public Attributes | |
| ModelId | model_id = 0 |
| Revision | revision = 0 |
| std::string | backend |
| std::string | backend_version |
| Termination | termination = Termination::Unknown |
| std::string | message |
| std::optional< double > | objective |
| std::optional< double > | best_bound |
| std::optional< double > | absolute_gap |
| std::optional< double > | relative_gap |
| std::vector< double > | values |
| std::vector< bool > | active_variables |
| bool | solution_validated = false |
| Guarantee | guarantee = Guarantee::Numerical |
| double | elapsed_seconds = 0.0 |
| std::optional< double > | native_backend_gap |
| bool | start_submitted = false |
An owning historical result. Model edits do not invalidate this snapshot. Values and active_variables use original variable slots, including tombstones. Only an independent original-model validator may set solution_validated.
|
noexcept |
Requires a finite validated objective and every active slot to be finite.
| double Gecode::Optimize::SolveResult::value | ( | Variable | variable | ) | const |
Reject absent solutions, foreign handles, invalid slots and tombstones.
| void Gecode::Optimize::SolveResult::update_gaps | ( | ObjectiveSense | sense | ) |
Recompute gaps from the original-sense objective and global best_bound. Missing values or a valid infinite bound leave both gaps unavailable. NaNs, non-finite objectives and inconsistent bound ordering throw ModelError; previous gaps are cleared before validation, never silently clamped to zero. The common normalized relative gap is abs(objective-best_bound) divided by max(1, abs(objective), abs(best_bound)); it is finite for finite inputs, including zero objectives. The absolute gap can overflow double to positive infinity. native_backend_gap preserves the vendor convention separately.
| ModelId Gecode::Optimize::SolveResult::model_id = 0 |
| Revision Gecode::Optimize::SolveResult::revision = 0 |
| std::string Gecode::Optimize::SolveResult::backend |
| std::string Gecode::Optimize::SolveResult::backend_version |
| Termination Gecode::Optimize::SolveResult::termination = Termination::Unknown |
| std::string Gecode::Optimize::SolveResult::message |
| std::optional<double> Gecode::Optimize::SolveResult::objective |
| std::optional<double> Gecode::Optimize::SolveResult::best_bound |
| std::optional<double> Gecode::Optimize::SolveResult::absolute_gap |
| std::optional<double> Gecode::Optimize::SolveResult::relative_gap |
| std::vector<double> Gecode::Optimize::SolveResult::values |
| std::vector<bool> Gecode::Optimize::SolveResult::active_variables |
| bool Gecode::Optimize::SolveResult::solution_validated = false |
| Guarantee Gecode::Optimize::SolveResult::guarantee = Guarantee::Numerical |
| double Gecode::Optimize::SolveResult::elapsed_seconds = 0.0 |
| std::optional<double> Gecode::Optimize::SolveResult::native_backend_gap |
| bool Gecode::Optimize::SolveResult::start_submitted = false |
Backend accepted the hint; this does not claim it became an incumbent.