local kiwi = require("kiwi") local Var = kiwi.Var x1 = Var("x1") x2 = Var("x2") xm = Var("xm") local constraints = { x1:ge(0), x2:le(100), x2:ge(x1 + 10), xm:eq((x1 + x2) / 2) } local solver = kiwi.Solver() for _, c in ipairs(constraints) do solver:add_constraint(c) end local c = kiwi.constraints.single(x1, 40, "EQ", kiwi.Strength.WEAK) solver:add_constraint(c) constraints[#constraints + 1] = c solver:add_edit_var(xm, kiwi.Strength.STRONG) solver:suggest_value(xm, 60) solver:update_vars() print(xm:value(), x1:value(), x2:value()) for _, c in ipairs(constraints) do print(c, c:violated()) end solver:suggest_value(xm, 90) solver:update_vars() print(xm:value(), x1:value(), x2:value()) for _, c in ipairs(constraints) do print(c, c:violated()) end