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

Saturation throughput of the team service model. More...

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

Go to the source code of this file.

Classes

struct  line::fj::FJTsmCapacityResult< T >
 [Lmax, Llp, Lfcfs, states, prob] of fj_tsm_capacity. More...

Namespaces

namespace  line
namespace  line::fj

Functions

template<class T>
FJTsmCapacityResult< T > line::fj::fj_tsm_capacity (unsigned s, const std::vector< T > &f, const std::vector< unsigned > &r, const std::vector< T > &x)
 Saturation throughput of the team service model.

Detailed Description

Saturation throughput of the team service model.

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

A class-k job seizes r(k) of the s servers at once, holds them for a mean x(k), and releases them all together. The apparent saturation rate is

Lambda_max = s / sum_k f(k) r(k) x(k),

attainable only when the scheduler can pack jobs into execution states that leave no server idle. The attainable capacity is the largest arrival rate for which some mixture p over the feasible execution states balances every class,

maximise Lambda s.t. sum_j p_j n(j,k)/x(k) = Lambda f(k), sum_j p_j = 1, p >= 0,

over the multisets of jobs whose total server demand is at most s. The optimum equals Lambda_max exactly when every state carrying positive probability is full capacity.

For the two-server two-class case with r = (1,2), strict first come first served cannot pack at all and reaches only

lambda_FCFS = 2 mu1 mu2 / (f1^2 mu2 + 2 f2^2 mu1 + 2 f1 f2 (mu1+mu2)).

Definition in file fj_tsm_capacity.h.