我实际使用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->空闲,否则 - >空闲),我不知道如何改变...所以我还有很长的路要走^ ^ –