| |||||||||||
Implication and equivalence constraints Description Defining logical constraints (implication, equivalence). Further explanation of this example: 'Xpress Kalis Mosel Reference Manual'
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
impequiv.mos (!**************************************************************** CP example problems =================== file impequiv.mos ````````````````` Logical constraints (implication, equivalence). (c) 2008 Artelys S.A. and Fair Isaac Corporation Creation: 2005, rev. Mar. 2013 *****************************************************************!) model "Logical constraints" uses "kalis" ! Default bounds for all variables setparam("KALIS_DEFAULT_LB", 0); setparam("KALIS_DEFAULT_UB", 5) declarations A, B, C, D, E: cpctr x,y,z,b: cpvar end-declarations setname(b, "b"); setname(x, "x") setname(y, "y"); setname(z, "z") b <= 1 ! Definition of constraints (without posting) A:= x >= y + 5 + z + b B:= b = 1 C:= all_different({x, y, z}) ! Cannot be used with 'equiv' D:= y <= z E:= distance(y,z) <= 2 writeln("Original domains: ", b, " ", x, " ", y, " ", z) ! If x, y and z are all different then b equals 1 (C=>B), ! if b equals 1 then x, y and z are all different (B=>C). implies(C, B) implies(B, C) ! E<=>B: b equals 1 if and only if |y-z| <= 2 equiv(E, B) ! A<=>D: x >= y + 5 + z + b if and only if y <= z equiv(A, D) writeln("With constraints: ", b, " ", x, " ", y, " ", z) while (cp_find_next_sol) writeln("Solution: ", b, " ", x, " ", y, " ", z) end-model | |||||||||||
© Copyright 2024 Fair Isaac Corporation. |