LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
objectives.h File Reference

The objectives to minimize and the constraints to respect. More...

#include <algorithm>
#include <cmath>
#include <memory>
#include <string>
#include <vector>
#include "line/opt/results.h"
Include dependency graph for objectives.h:

Go to the source code of this file.

Classes

class  line::opt::Constraint
class  line::opt::ResponseTimeConstraint
class  line::opt::SystemResponseTimeConstraint
class  line::opt::ThroughputConstraint
class  line::opt::UtilizationConstraint
class  line::opt::BudgetConstraint
class  line::opt::Objective
class  line::opt::MinimizeCost
class  line::opt::MinimizeSystemResponseTime
class  line::opt::MaximizePerformance

Namespaces

namespace  line
namespace  line::opt

Typedefs

using line::opt::ConstraintPtr = std::shared_ptr<Constraint>
using line::opt::ObjectivePtr = std::shared_ptr<Objective>

Detailed Description

The objectives to minimize and the constraints to respect.

A Constraint returns its VIOLATION, not a boolean: zero when satisfied and the amount by which it is breached otherwise, so a search can follow the gradient of an infeasible point back into the feasible region. An unobtainable metric gives infinity rather than zero, so a model that failed to solve cannot read as feasible. ResponseTimeConstraint, SystemResponseTimeConstraint, ThroughputConstraint and UtilizationConstraint read the solved model; BudgetConstraint reads the variable values instead, costing each by a per-variable rate.

An Objective carries its own constraint list, and evaluate_with_penalty folds the violations in at a weight (default 1e6), which is how the derivative-free solvers handle constraints. Every objective is a MINIMIZATION: MaximizePerformance returns the negated score.

Formatting note: the class bodies here are written one per line, unlike the rest of the tree.

Definition in file objectives.h.