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

Deterministic subtask delays that minimise mean dispersion. More...

#include <cstddef>
#include <vector>
#include "line/api/fj/fj_dispersion.h"
#include "line/api/fj/fj_types.h"
#include "line/num/number.h"
#include "line/util/error.h"
Include dependency graph for fj_delay_opt.h:

Go to the source code of this file.

Classes

struct  line::fj::FJDelayOptResult< T >
 [d, Edisp, Emax] of fj_delay_opt. More...

Namespaces

namespace  line
namespace  line::fj

Functions

template<class T>
FJDelayOptResult< T > line::fj::fj_delay_opt (const std::vector< unsigned > &shape, const std::vector< T > &rate, unsigned maxsweeps=40, const T &dtol=num_traits< T >::from_double(1e-8), unsigned npanels=2000)
 Deterministic subtask delays that minimise mean dispersion.

Detailed Description

Deterministic subtask delays that minimise mean dispersion.

Templated port of matlab/src/api/fj/fj_delay_opt.m.

Holding back a fast branch costs little at the last completion and buys a great deal at the first, so the minimiser of the dispersion of fj_dispersion is generally interior and strictly positive on every branch but the slowest.

The objective is minimised by cyclic coordinate descent with a golden section line search on each coordinate: deterministic, derivative-free, and the same sequence of evaluations in all four codebases. Adding a constant to every delay shifts both order statistics equally, so the search returns the representative with min(d) = 0.

Definition in file fj_delay_opt.h.