Làm thế nào tôi có thể nhận được giá trị trăn thực từ mô hình Z3?Z3/Python nhận giá trị trăn từ mẫu
Ví dụ:
p = Bool('p')
x = Real('x')
s = Solver()
s.add(Or(x < 5, x > 10), Or(p, x**2 == 2), Not(p))
s.check()
print s.model()[x]
print s.model()[p]
in
-1.4142135623?
False
nhưng đó là đối tượng Z3 và không trăn đối tượng phao/bool.
tôi biết rằng tôi có thể kiểm tra các giá trị boolean sử dụng is_true
/is_false
, nhưng làm thế nào tôi có thể thanh lịch chuyển đổi ints/real/... trở về giá trị sử dụng (không phải trải qua chuỗi và cắt đi thêm ?
biểu tượng này, ví dụ) .
Bạn đã thử 'bool (s.model() [x])' và 'float (s.model() [p])'? –
Có, nhưng điều đó không hoạt động (chính xác): 'bool (s.model() [p])' cho 'True', khi nó phải là' False' và 'float (s.model() [x]) 'ném một ngoại lệ' AttributeError: Ví dụ AlgebraicNumRef không có thuộc tính '__float __' ' – tqx