DelayInformation

Pipeline information delay with awareness

Diagram

Information

This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.

The real output y is the real input delayed by a fixed delay time which can be constant (delayTime) or variable (u_delayTime) during the simulation.

y[t] = u[t - delayTime]

The input signal is thus effectively shifted forward in time.

During an initial period (at most as long as the initial delayTime or the maximumDelayTime when the delay time can vary over time), we need to provide information about the historical input u (e.g., the input before the start time of the simulation). The historical input can either be given by a constant value (either the initialValue or the initial input u) or by a function of time (usually a TableFunction), that will take the output connector y_lookupTime  as input and then provide the relevant historical input via the input connector u_history.

Given that the delay time may be variable, we must distinguish two situations:

  • Delayed information is older than what we know:
    In this case, we will hold the previous information until more recent information becomes available.

  • Delayed information is more recent than what we know:
    In this case, we will update the information we hold.

Implementation

Internally a TimeInput component is used to provide the current time, starting at modelSettings.modelStartTime. At regular sampling intervals we will check whether the delayed information is more current than the stored information and update accordingly. time it was sampled (t_sampled) will be stored.

As checking for increases in the delay time can introduce a lot of events, the checks will only be done a regular time events given by the parameter samplingPeriod in the Advanced tab. 

Notes

  • The behavior for DelayInformation and DelayFixed are quite similiar, but there is a subtle difference:

    A DelayInformation models the delay in perceiving information where the recipient is aware of the delay time and thus will disregard older informatiion than the one he already has.

    In the case of a DelayFixed we will strictly delay any information given the actual delay time at any point in time and thus may receive information that is actually older than previous information when the delay time increases.

  • Since information is stored within the component, a rectangle is used for the component to be reminiscent of a stock.

  • A DelayInformation is an information delay, that is used to model delays in updating beliefs and perceptions; unlike a material delay matter is not conserved [20]. 

  • The parameter init in the Advanced tab allows to select →InitializationOptions (but hasExogenousHistory = true will allways have priority):
    • FixedValue (default) will use the parameter initialValue to determine the initial output y.

    • SteadyState will set the initial output y equal to the initial input u.

    • Free there will be no initial equation and thus the solver is free to find an initial output using initialValue as an initial guess.

See also

DelayFixedSmooth, SmoothNConveyor

Parameters (7)

delayTime

Value: 1

Type: Time (s)

Description: Constant delay time (optional)

maximumDelayTime

Value: 50

Type: Time (s)

Description: Maximal value allowed for delay time (needed for variable delay time)

initialValue

Value: 0

Type: OutputType

Description: Initial constant output, if no exogenous history is given

hasConstantDelayTime

Value: true

Type: Boolean

Description: = true, if the delay time is given by the parameter 'delayTime'

hasExogenousHistory

Value: false

Type: Boolean

Description: = true, if the input 'u_history' gives the output for an initial period, otherwise the initial output will remain constant until delayTime is reached

init

Value: modelSettings.init

Type: InitializationOptions

Description: Provide InitializationOptions (Free, FixedValue, SteadyState)

samplingPeriod

Value: modelSettings.samplingPeriod

Type: Time (s)

Description: Interval at which to check for increases in delay time

Connectors (5)

u

Type: RealInput

Description: Input

y

Type: RealOutput

Description: Output signal

u_history

Type: RealInput

Description: Input of recent history (start time - initial delay time)

y_lookupTime

Type: RealOutput

Description: Time for looking up historical input

u_delayTime

Type: RealInput

Description: Delay time input

Components (10)

modelSettings

Type: ModelSettings

Description: Setting important global variables within a model

parDelayTime

Type: ConstantConverterTime

Description: Constant delay time (optional)

parInitialOutput

Type: ConstantConverter

Description: Initial output if not history is given

clippedDelayTime

Type: Clip

Description: DelayTime has to be in the interval (dt, maximumDelayTime)

delayedInput

Type: VariableDelay

Description: Delay block with variable DelayTime

history

Type: PassThrough

Description: Output is identical to input

delayedInputConstant

Type: FixedDelay

Description: Delayed input with constant delay time

delayedInformation

Type: PassThrough

Description: Delayed input to use for further processing

clock

Type: TimeInput

Description: Provide time starting with 0

lookupTime

Type: Gap

Description: The actual time minus the delay time, i.e., the time stamp for the delayed information

Revisions

  • Fixed errors in the implementation and improved code in v2.2.