symmetrize_pwc

Graph.symmetrize_pwc(pwc, *, name=None)

Create the symmetrization of a piecewise-constant function.

Parameters

  • pwc (Pwc) – The piecewise-constant function v(t)v(t) to symmetrize.
  • name (str or None , optional) – The name of the node.

Returns

The piecewise-constant function w(t)w(t) defined by w(t)=v(t)w(t)=v(t) for 0tτ0\leq t\leq \tau and w(t)=v(2τt)w(t)=v(2\tau-t) for τt2τ\tau\leq t\leq 2\tau, where τ\tau is the duration of v(t)v(t).

Return type

Pwc

SEE ALSO

Graph.pwc_signal : Create Pwc signals from (possibly complex) values.

Graph.time_reverse_pwc : Reverse Pwcs in time.

Notes

For more information on Pwc nodes see the Working with time-dependent functions in Boulder Opal topic.

Examples

Create a symmetric piecewise-constant function.

>>> x = graph.pwc(durations=np.array([0.1, 0.3]), values=np.array([1, 2]))
>>> graph.symmetrize_pwc(x, name="symmetrize")
<Pwc: name="symmetrize", operation_name="symmetrize_pwc", value_shape=(), batch_shape=()>
>>> result = bo.execute_graph(graph=graph, output_node_names="symmetrize")
>>> result["output"]["symmetrize"]
{
    'durations': array([0.1, 0.3, 0.3, 0.1]),
    'values': array([1., 2., 2., 1.]),
    'time_dimension': 0
}

See more examples in the How to optimize controls with time symmetrization user guide.

Was this useful?