2016-12-14 130 views
1

我是z3py的新用户。我需要写检查一些规则的满意度像如果在z3py中声明

IF room.temp < 18 THEN room.fireplace = on 
IF room.temp > 24 THEN room.fireplace = off 
IF room.CO > 180 THEN room.fireplace = off 
IF room.temp > 28 THEN house.hvac = off 
IF house.hvac == on THEN room.fireplace = off 

也是一个程序该怎么写

bedroom.occupancy == true and bedroom.env_brightness <= 31.5 and bedroom.light.switch = on 

感谢

回答

1

你需要一个Z3 IF-THEN-ELSE可以定义在z3中使用If

>>> x = Int('x') 
>>> y = Int('y') 
>>> max = If(x>y, x, y) 
>>> max 
If(x > y, x, y) 

为了定义多个约束可以使用AndOr

>>> max = If(And(x>y, x!=0), x, y) 
>>> max 
If(And(x > y, x != 0), x, y) 
>>> simplify(max) 
If(And(Not(x <= y), Not(x == 0)), x, y) 

希望这有助于。 This是一个很好的资源,从一般z3py开始。

+0

感谢您的回答。但我怎样才能使用求解器对象来创建约束,并检查这些约束在某些策略“条件”下是否满足 –

+0

这也适用于Solver。看看https://github.com/ByteBandits/writeups/blob/master/csaw-finals-2016/reverse/rev250/sudhackar/rev250.py。我在打电话,这就是我所能找到的。 – sudhackar