我實際使用Z3py調度解決問題,我想代表2個處理器系統中的不同執行時間4個過程必須做到的。陣列和數據類型在Z3py
我的實際數據是: 方法1:在0到達和執行4種 方法2的時間:到達在1和執行3個 工序3的時間:到達在第3和執行5種 方法4的時間:到達在1和2
實際上,我試圖同時在相同的時間子分解每個代表每個過程的執行時間,所以我的數據類型是這樣的:
Pn = Datatype('Pn')
Pn.declare('1')
Pn.declare('2')
Pn.declare('3')
Pn.declare('4')
Pt = Datatype('Pt')
Pt.declare('1')
Pt.declare('2')
Pt.declare('3')
Pt.declare('4')
Pt.declare('5')
Process = Datatype('Process')
Process.declare('cons' , ('name',Pn) , ('time', Pt))
Process.declare('idle')
其中PN和PT的進程名和過程的一部分(1過程中4個部分,...)
但現在我不知道我可以代表我的處理器加3分的規則,我需要:唯一性(每個子流程必須做且只有1個被時間只有1個處理器)檢查到來(它到達之前的過程的第一部分不能被處理)和順序(一個過程的每一部分必須在先例之後處理) 所以我想使用數組來表示我的2個處理器的用這種聲明:
P = Array('P', IntSort() , Process)
但是,當我試圖執行它,我得到了一個錯誤信息說:
Traceback (most recent call last):
File "C:\Users\Alexis\Desktop\test.py", line 16, in <module>
P = Array('P', IntSort() , Process)
File "src/api/python\z3.py", line 3887, in Array
File "src/api/python\z3.py", line 3873, in ArraySort
File "src/api/python\z3.py", line 56, in _z3_assert
Z3Exception: 'Z3 sort expected'
,知道我不知道該怎麼處理呢?我必須建立一個新的數據類型和計算方式來增加我的規則?或者是有辦法的數據類型添加到陣列這將讓我創建的規則是這樣的:
unicity = ForAll([x,y] , (Implies(x!=y,P[x]!=P[y])))
在此先感謝
謝謝,它幫助我繼續(我沒有看到教程中的create()方法...)但是現在我被卡住了,因爲當我嘗試獲得具有唯一性的模型時(我將其調整爲2數組)我只獲得所有索引我們得到空閒的數組...(0->空閒,否則 - >空閒),我不知道如何改變...所以我還有很長的路要走^ ^ –