Skip to content
55 changes: 55 additions & 0 deletions benchmarks/control_theory/ball_beam/kill_hold.prob
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# system state
x1 = 1
x2 = 1
x3 = 1

# command
u = 1

# controller state
z1 = 1
z2 = 1

# measurements
y1 = 0.5 * x1
y2 = 0.25 * x3

# Failure probabilities
ps = 0
pc = 0
pa = 0

while true:
# old values
x1o = x1
x2o = x2
x3o = x3
z1o = z1
z2o = z2

# system evolution
x1 = x1o + 0.015*x2o + 0.0003*x3o + 0.000029*u
x2 = x2o + 0.045*x3o + 0.0058*u
x3 = x3o + 0.256*u

overrun = Bernoulli(pc)
actuation_fail = Bernoulli(pa)

# controller evolution
if overrun == 0:
z1 = z1o + 0.025 * y1
z2 = 0.9685*z2o - 0.2608 * y1
end

# new command
if overrun == 0 && actuation_fail == 0:
u = -0.108*z1o - 0.2608*z2o - 2.43*y1 - 3*y2
end

# measurements
sensor_fail = Bernoulli(ps)
if sensor_fail == 0:
y1 = 0.5 * x1
y2 = 0.25 * x3
end
end
57 changes: 57 additions & 0 deletions benchmarks/control_theory/ball_beam/kill_zero.prob
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# system state
x1 = 1
x2 = 1
x3 = 1

# command
u = 1

# controller state
z1 = 1
z2 = 1

# measurements
y1 = 0.5 * x1
y2 = 0.25 * x3

# Failure probabilities
#ps = 0
pc = 0
#pa = 0

while true:
# old values
x1o = x1
x2o = x2
x3o = x3
z1o = z1
z2o = z2

# system evolution
x1 = x1o + 0.015*x2o + 0.0003*x3o + 0.000029*u
x2 = x2o + 0.045*x3o + 0.0058*u
x3 = x3o + 0.256*u

overrun = Bernoulli(pc)
actuation_fail = Bernoulli(pa)

# controller evolution
if overrun == 0:
z1 = z1o + 0.025 * y1
z2 = 0.9685*z2o - 0.2608 * y1
end

# new command
if overrun == 0 && actuation_fail == 0:
u = -0.108*z1o - 0.2608*z2o - 2.43*y1 - 3*y2
else:
u = 0
end

# measurements
sensor_fail = Bernoulli(ps)
if sensor_fail == 0:
y1 = 0.5 * x1
y2 = 0.25 * x3
end
end
55 changes: 55 additions & 0 deletions benchmarks/control_theory/ball_beam/skip_hold.prob
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# system state
x1 = 1
x2 = 1
x3 = 1

# command
u = 1

# controller state
z1 = 1
z2 = 1

# measurements
y1 = 0.5 * x1
y2 = 0.25 * x3

# Failure probabilities
ps = 0
pc = 0
pa = 0

while true:
# old values
x1o = x1
x2o = x2
x3o = x3
z1o = z1
z2o = z2

# system evolution
x1 = x1o + 0.015*x2o + 0.0003*x3o + 0.000029*u
x2 = x2o + 0.045*x3o + 0.0058*u
x3 = x3o + 0.256*u

overrun = Bernoulli(pc)
actuation_fail = Bernoulli(pa)

# controller evolution
if overrun == 0:
z1 = z1o + 0.025 * y1
z2 = 0.9685*z2o - 0.2608 * y1
end

# new command
if overrun == 0 && actuation_fail == 0:
u = -0.108*z1o - 0.2608*z2o - 2.43*y1 - 3*y2
end

# measurements
sensor_fail = Bernoulli(ps)
if sensor_fail == 0 && overrun == 0:
y1 = 0.5 * x1
y2 = 0.25 * x3
end
end
57 changes: 57 additions & 0 deletions benchmarks/control_theory/ball_beam/skip_zero.prob
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# system state
x1 = 1
x2 = 1
x3 = 1

# command
u = 1

# controller state
z1 = 1
z2 = 1

# measurements
y1 = 0.5 * x1
y2 = 0.25 * x3

# Failure probabilities
ps = 0
pc = 0
pa = 0

while true:
# old values
x1o = x1
x2o = x2
x3o = x3
z1o = z1
z2o = z2

# system evolution
x1 = x1o + 0.015*x2o + 0.0003*x3o + 0.000029*u
x2 = x2o + 0.045*x3o + 0.0058*u
x3 = x3o + 0.256*u

overrun = Bernoulli(pc)
actuation_fail = Bernoulli(pa)

# controller evolution
if overrun == 0:
z1 = z1o + 0.025 * y1
z2 = 0.9685*z2o - 0.2608 * y1
end

# new command
if overrun == 0 && actuation_fail == 0:
u = -0.108*z1o - 0.2608*z2o - 2.43*y1 - 3*y2
else:
u = 0
end

# measurements
sensor_fail = Bernoulli(ps)
if sensor_fail == 0 && overrun == 0:
y1 = 0.5 * x1
y2 = 0.25 * x3
end
end
40 changes: 40 additions & 0 deletions benchmarks/control_theory/ball_beam/system.prob
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# system state
x1 = 1
x2 = 1
x3 = 1

# command
u = 1

# controller state
z1 = 1
z2 = 1

# measurements
y1 = 0.5 * x1
y2 = 0.25 * x3

while true:
# old values
x1o = x1
x2o = x2
x3o = x3
z1o = z1
z2o = z2

# system evolution
x1 = x1o + 0.015*x2o + 0.0003*x3o + 0.000029*u
x2 = x2o + 0.045*x3o + 0.0058*u
x3 = x3o + 0.256*u

# controller evolution
z1 = z1o + 0.025 * y1
z2 = 0.9685*z2o - 0.2608 * y1

# new command
u = -0.108*z1o - 0.2608*z2o - 2.43*y1 - 3*y2

# measurements
y1 = 0.5 * x1
y2 = 0.25 * x3
end
45 changes: 45 additions & 0 deletions benchmarks/control_theory/cruise_control/kill_hold.prob
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# state vector
x1 = 1
x2 = 1
x3 = 1

# command
u = 1

# measurements
y1 = x1
y2 = x2
y3 = x3

# Failure probabilities
ps = 0
pc = 0
pa = 0

while true:
# store old values
x1o = x1
x2o = x2
x3o = x3

# state update
x1 = 1*x1o + 0.01*x2o + 0*x3o + 0.0001*u
x2 = -0.0003*x1o + 0.9997*x2o + 0.01*x3o + 0.0001*u
x3 = -0.0604*x1o - 0.0531*x2o + 0.9974*x3o + 0.0247*u

overrun = Bernoulli(pc)

# command update
actuation_fail = Bernoulli(pa)
if overrun == 0 && actuation_fail == 0:
u = -872.54*y1 - 131.49*y2 - 10.097*y3
end

# measurements
sensor_fail = Bernoulli(ps)
if sensor_fail == 0:
y1 = x1
y2 = x2
y3 = x3
end
end
47 changes: 47 additions & 0 deletions benchmarks/control_theory/cruise_control/kill_zero.prob
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# state vector
x1 = 1
x2 = 1
x3 = 1

# command
u = 1

# measurements
y1 = x1
y2 = x2
y3 = x3

# Failure probabilities
ps = 0
pc = 0
pa = 0

while true:
# store old values
x1o = x1
x2o = x2
x3o = x3

# state update
x1 = 1*x1o + 0.01*x2o + 0*x3o + 0.0001*u
x2 = -0.0003*x1o + 0.9997*x2o + 0.01*x3o + 0.0001*u
x3 = -0.0604*x1o - 0.0531*x2o + 0.9974*x3o + 0.0247*u

overrun = Bernoulli(pc)

# command update
actuation_fail = Bernoulli(pa)
if overrun == 0 && actuation_fail == 0:
u = -872.54*y1 - 131.49*y2 - 10.097*y3
else:
u = 0
end

# measurements
sensor_fail = Bernoulli(ps)
if sensor_fail == 0:
y1 = x1
y2 = x2
y3 = x3
end
end
Loading