Самый эффективный способ кодирования максимума, минимума и абс в Z3Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Самый эффективный способ кодирования максимума, минимума и абс в Z3

Сообщение Anonymous »

У меня есть система нелинейных целочисленных неравенств, которую я хочу решить. В нем мне нужно вычислить абсолютное значение целых чисел, а также максимум/минимум двух целых чисел.
Вот игрушечный пример:

Код: Выделить всё

from z3 import *
set_option(verbose=10)
x, y, z, z1 = Ints('x y z z1')
def abs(x):
return If(x >= 0,x,-x)

def max(x, y):
return If(x>=y, x, y)

def min(x, y):
return If(x= 26)
s.add(min(abs(y), abs(x))> 5)
s.add(3*x**2 + 25*y**2 >= 100)
s.add(x*y - z*z1 < 10)
s.add(max(abs(z), abs(z1))  1)
s.check()
print(s.model())
Моя реальная система более сложна и требует гораздо больше времени для запуска.
Я не совсем понимаю, как Z3 работает под капотом, но я понимаю обеспокоен тем, что то, как я определил abs, max и min с помощью функций Python, может затруднить Z3 решение системы неравенств. Есть ли лучший способ сделать Z3 потенциально более эффективным?

Подробнее здесь: https://stackoverflow.com/questions/693 ... -abs-in-z3
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»