нужна помощь с Z3 и Python ... похоже, я слишком туп для этого. Мой код:
from z3 import *
num1 = Int('num1')
num2 = Int('num2')
num3 = Int('num3')
s = Solver()
s.add( 2 * num1 - num2 + 0.5 * num3 == 5412.0)
s.add( 2 * num1 + 3 * num2 + 4 * num3 == 28312.0)
Результат следующий:
[num3 = 1, num1 = 5568, num2 = 5724]
Что не совсем правильно: первое выражение на самом деле возвращает 5412.5, а не 5412.0. Я предполагаю, что это связано со смешанным использованием «Int» с некоторыми «точечными числами» (0.5). На самом деле мне нужно оставить «numX» как «Int», так как они являются целыми числами (это ограничение). Думаю, мне не хватает, как справиться с этой смешанной ситуацией. Кто-нибудь может мне помочь?
Спасибо,
Отредактировано
Благодаря ответу "псевдоним" я получил правильное направление:
добавив
cc1 = RealVal(0.5)
и затем используя эту константу в выражении, я получил правильный результат.
Спасибо всем!