nuZ:模特说什么

时间:2015-06-12 07:11:45

标签: optimization z3

在玩nuZ时我偶然发现了这个:

(declare-fun x () Int)
(declare-fun y () Int)

(assert-soft (= x 1) :weight 1 :id first)
(assert-soft (= y 4) :weight 3 :id first)

(assert-soft (= x 2) :weight 1 :id second)
(assert-soft (= y 5) :weight 3 :id second)

(assert-soft (= x 3) :weight 1 :id third)
(assert-soft (= y 6) :weight 3 :id third)

(maximize (+ x y))

(check-sat)
(get-model)

给了我这个结果(使用Z3不稳定分支4.4.0):

first |-> 0
second |-> 4
third |-> 4
(+ x y) |-> 5
sat
(model
  (define-fun x () Int
    1)
  (define-fun y () Int
    4)
)

“| - >”是什么这意味着什么

当提到软断言的id时,它可能意味着放弃一些软断言的成本。 当提到目标时,它看起来像是优化的结果。

还有更多吗?

此致 约翰

1 个答案:

答案 0 :(得分:1)

没有更多的东西。 对于软约束," | - >"右边的数字。给出如下。

假设我们断言 (断言 - 软F1:重量w1:id第一) (断言 - 软F2:重量w2:id第一) (断言 - 软F3:权重w3:id第一)

假设M是模型最大赋值 将事实值分配给F1,F2,F3中的变量,因此我们可以将M中的公式计算为0(假)或1(真)。

然后是| - >的右侧是数字:

     M(not(F1))*w1 + M(not(F2))*w2 + M(not(F3))*w3

MaxSat解决方案最小化此总和,或双重最大化总和:

     M(F1)*w1 + M(F2)*w2 + M(F3)*w3

(不打印)。