Conditional Statements
How to create a conditional statement
Python if
statements won't work when applied to TemporalVar
instances. To implement conditional Temporal Variables, use vip.where(condition, a, b)
.
The expression variable = vip.where(condition, a, b)
means that the value of variable
is a
at times when the condition is True
, and b
otherwise.
Why if
doesn't work
TemporalVar
instances can't behave correctly with regular if
statements. Using if
will evaluate the entire TemporalVar
object as a boolean, which ignores its temporal nature. Because it is ambiguous, a ValueError
is raised when an if
is applied to a TemporalVar
.
To illustrate the issue, let's say we want to create the following step function:
❌ Don't do this
danger
This code does not work:
time = vip.temporal(lambda t: t)
if time < 5:
step = vip.temporal(0)
else:
step = vip.temporal(1)
vip.solve(10, time_step=1)
✅ Do this instead
tip
Use vip.where()
to define the conditional behavior in a single expression:
time = vip.temporal(lambda t: t)
step = vip.where(time < 5, 0, 1)
step.to_plot()
vip.solve(10, time_step=0.01)