Gecode 6.4.0
Gecode::Optimize::SolveResult Struct Reference

#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

Detailed Description

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.

Member Function Documentation

◆ has_solution()

bool Gecode::Optimize::SolveResult::has_solution ( ) const
noexcept

Requires a finite validated objective and every active slot to be finite.

◆ value()

double Gecode::Optimize::SolveResult::value ( Variable variable) const

Reject absent solutions, foreign handles, invalid slots and tombstones.

◆ update_gaps()

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.

Member Data Documentation

◆ model_id

ModelId Gecode::Optimize::SolveResult::model_id = 0

◆ revision

Revision Gecode::Optimize::SolveResult::revision = 0

◆ backend

std::string Gecode::Optimize::SolveResult::backend

◆ backend_version

std::string Gecode::Optimize::SolveResult::backend_version

◆ termination

Termination Gecode::Optimize::SolveResult::termination = Termination::Unknown

◆ message

std::string Gecode::Optimize::SolveResult::message

◆ objective

std::optional<double> Gecode::Optimize::SolveResult::objective

◆ best_bound

std::optional<double> Gecode::Optimize::SolveResult::best_bound

◆ absolute_gap

std::optional<double> Gecode::Optimize::SolveResult::absolute_gap

◆ relative_gap

std::optional<double> Gecode::Optimize::SolveResult::relative_gap

◆ values

std::vector<double> Gecode::Optimize::SolveResult::values

◆ active_variables

std::vector<bool> Gecode::Optimize::SolveResult::active_variables

◆ solution_validated

bool Gecode::Optimize::SolveResult::solution_validated = false

◆ guarantee

Guarantee Gecode::Optimize::SolveResult::guarantee = Guarantee::Numerical

◆ elapsed_seconds

double Gecode::Optimize::SolveResult::elapsed_seconds = 0.0

◆ native_backend_gap

std::optional<double> Gecode::Optimize::SolveResult::native_backend_gap

◆ start_submitted

bool Gecode::Optimize::SolveResult::start_submitted = false

Backend accepted the hint; this does not claim it became an incumbent.


The documentation for this struct was generated from the following file: