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

Mean subtask dispersion of a split-merge system with Erlang branches. More...

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

Go to the source code of this file.

Classes

struct  line::fj::FJDispersionResult< T >
 [Edisp, Emax, Emin] of fj_dispersion. More...

Namespaces

namespace  line
namespace  line::fj

Functions

template<class T>
FJDispersionResult< T > line::fj::fj_dispersion (const std::vector< unsigned > &shape, const std::vector< T > &rate, const std::vector< T > &d, const T &tol=num_traits< T >::from_double(1e-10), unsigned npanels=4000)
 Mean subtask dispersion of a split-merge system with Erlang branches.
template<class T>
FJDispersionResult< T > line::fj::fj_dispersion (const std::vector< unsigned > &shape, const std::vector< T > &rate)
 The undelayed system, d = 0.

Detailed Description

Mean subtask dispersion of a split-merge system with Erlang branches.

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

E[X_(N)] = integral_0^inf [ 1 - prod_i F_i(x - d_i) ] dx E[X_(1)] = integral_0^inf prod_i [ 1 - F_i(x - d_i) ] dx E[D_d] = E[X_(N)] - E[X_(1)]

The integrand actually evaluated is 1 - prod F_i - prod (1-F_i), which is non-negative and vanishes at both ends; the difference of the two products printed in the survey is not the dispersion and can go negative.

Branch i is an Erlang with shape(i) stages of rate rate(i), the split-merge equivalent used in the delay-scheduling construction: a subtask with q others ahead of it in its parallel queue behaves as an Erlang(q+1, mu).

Definition in file fj_dispersion.h.