42 lines
776 B
Lua
42 lines
776 B
Lua
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
|