Я действительно новичок в решателях Z3 и SMT. У меня есть следующая проблема, которую я не знаю, как закодировать в Z3py.Z3py SMT кодирование следующих переменных и формул
В приведенной выше схеме N является множество узлов, таким образом, N = {Node1, Node2, node3, Node4, Node5, Node6, Node7}
Я это набор входов, I = { Я , я , я , я }
вывода множество выходов, O = {O , о, О }
G представляет собой группу, где для любых последовательных 2 выходов (O я, О J), если O я генерируется первый выход и О J является второй выход генерируется тогда, G к является множеством узлов, которые были запланированы после генерации O я и до генерации O J, но, если O J был создан до O i, тогда G k содержит все блоки, которые были запланированы до O j. Планирование узлов задается другой программой. Например, в приведенном выше блок-схеме планирования узлов наряду с выработкой продукции выглядит следующим образом:
- Первый узел по расписанию = Node1
- Второй узел по расписанию = Node2
- Третий узел по расписанию = Node5
- Выход генерируется = O
- Четвертый узел запланирован = node3
- Пятый узел по расписанию = Node6
- Выход генерируется = O
- Шестой узел запланированную = Node4
- Пятый узел по расписанию = Node7
- Выход генерируется = O
Таким образом, из вышесказанного можно сказать, что G за (O , O) is = {Node3, Node6}
Но G для (O , О) является = {Node1, Node2, Node5}
Для выполнения каждого узла нам нужно задание, задание может реализовать 1 узел или ее набор узлов за раз.
Узел г, я обозначает I й узел в группе G г. Задача r, m обозначает m th Задача в группе G r.
Булевы переменные (может быть либо 0 или 1):
- е Узел г, я Задача г, т представляет, если Узел г, я отображается в Task г, т
- Ду Узел R, I Узел с, J представляет, если Узел s, j зависит от узла r, i i.e.если существует путь от узла г, я к узлу S, J
- DT Задача г, т Задача с, п обозначает, является ли Задача S, N зависит от задачи г, т
- м Задача г, т представляет собой, если есть любой узел отображается на целевой г, м
Основываясь на приведенной выше информации, я должен сформулировать следующие уравнения в SMT.
- Минимизация (Σ г, т М Задача г, т)
- М Задача г, т> = е Узел г, я Задача r, m (для всех i)
- Σ м е Узел г, я Задача г, т = 1 (для всех г = I, O!) пример: е Узел г, я Задача г, т + ж Узел г, я Задача г, т + 1 + ж Node R, I Задача г, т + 2 = 1 + 0 + 0 = Это говорит о том, что узел г, я сопоставлен к задаче г, т Поскольку F Node г, я задача г, т = 1 (только один узел может быть отображен в 1 задачи в то время, но задача может быть отображен на нескольких узлах одновременно)
- е узел г, я Задача s, m = 0 (для всех г! = S)
- F Узел г, я Задача г, т = 1 (для всех г = I, О и т = I)
- ф Узел R, I задачи r, m = 0 (для всех r = I, O и m!= Я)
- ДТ Задача г, т Задача с, п> = F Узел R, I задач г, м + F Узел с, J Задача с , п + Д.Н. Узел R, I Узел с, J - 2
- ДТ Задача г, т Задача с, п> = DT Задача г, т Задача т, л + DT Задача т, л Задача с, п - 1
- ДТ Задача г, т Задача с, п + DT задач s, N задач г , М < = 1
Я не понимаю, как представлять переменные и эти формулы в формате SMT.
Спасибо, что ответили на мой вопрос, я переформатировал вопрос. Будет ли ответ по-прежнему оставаться таким же для вышеупомянутого вопроса? а также вы могли бы любезно помочь мне понять, как представить выше суммирования терминов. Вышеупомянутые функции, такие как f, будут ли они представлены другим способом для представления зависимостей? – Priyanka