1
在pysmt,假設我已經創建了一個解算器和增加了許多斷言。現在,我想製作解算器實例的副本,因爲我需要向解算器添加不同的斷言。我該怎麼做?我需要這樣做才能提高代碼的性能。如何複製在pysmt創造了一個求解?
我試圖做這樣的事情副本(),克隆()和deepcopy的(),但他們都沒有工作。所以我目前的解決方法是現在跟蹤所有的斷言,創造新的求解器的實例,並從頭開始每次建立起來。
在pysmt,假設我已經創建了一個解算器和增加了許多斷言。現在,我想製作解算器實例的副本,因爲我需要向解算器添加不同的斷言。我該怎麼做?我需要這樣做才能提高代碼的性能。如何複製在pysmt創造了一個求解?
我試圖做這樣的事情副本(),克隆()和deepcopy的(),但他們都沒有工作。所以我目前的解決方法是現在跟蹤所有的斷言,創造新的求解器的實例,並從頭開始每次建立起來。
對於您的情況,最簡單的似乎是如下:
您可以檢索使用「斷言()」方法從求解器的所有斷言。
from z3 import *
x, y = Ints('x y')
s1 = Solver()
s1.add(x <= y)
print s1
s2 = Solver()
s2.add(s1.assertions())
print s2
爲pysmt,似乎並不像我能做到這一點,但在任何情況下,我可以從pysmt移開如果需要的話。如果我按照您提及的方式進行呼叫,我是否獲得顯着的績效改進? – adrianX
pysmt似乎不支持任何這樣的功能呢,但他們提供了一種方法來訪問的功能不是由他們的圖書館包裹,在這裏看到:http://pysmt.readthedocs.io/en/latest/tutorials.html#how -to-訪問功能-的解決者而不是-目前包裹按pysmt –
你好克里斯托夫,是有幫助!應該更徹底地閱讀文檔。謝謝! – adrianX