На самом деле я использую 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 раз только 1 процессором) проверка прибытия (первая часть процесса не может обрабатываться до того, как он прибыл) и порядок (каждая часть процесса должна обрабатываться после прецедента) Итак, я думал об использовании массивов для представления моих двух процессоров с таким объявлением:
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])))
заранее спасибо