FICO Xpress Optimization Examples Repository
 FICO Optimization Community FICO Xpress Optimization Home

Introductory example: constraint handling

Description
Introductory example: scheduling meetings, stated using disequality constraints; default enumeration.
• meeting.mos: basic version, stating disequality constraints
• meeting2.mos: Additional constraints, immediate posting of (unnamed) constraints
• meeting3.mos: Named constraints posted without control of result
• meeting4.mos: Explicit posting of constraints with 'cp_post' to retrieve the result
Further explanation of this example: 'Xpress Kalis Mosel User Guide', Sections 2.1 A first model and 3.1 Constraint handling

Source Files
By clicking on a file name, a preview is opened at the bottom of this page.

meeting2.mos

(!****************************************************************
CP example problems
===================

file meeting2.mos

Introductory example.

(c) 2008 Artelys S.A. and Fair Isaac Corporation

*****************************************************************!)

model "Meeting (2)"
uses "kalis"

declarations
MEETINGS = {'A','B','C','D'}        ! Set of meetings
TIME = 1..3                         ! Set of time slots
plan: array(MEETINGS) of cpvar      ! Time slot per meeting
end-declarations

forall(m in MEETINGS) do
setdomain(plan(m), TIME)
setname(plan(m), "plan"+m)
end-do
writeln("Original domains: ", plan)

plan('B') <= 2                       ! Meeting B before day 3
plan('D') <> 2                       ! Meeting D not on day 2
plan('A') = 1                        ! Meeting A on day 1
writeln("With constraints: ", plan)

! Respect incompatibilities
plan('A') <> plan('B')
plan('A') <> plan('D')
plan('B') <> plan('C')
plan('B') <> plan('D')

! Solve the problem
if not cp_find_next_sol then
writeln("Problem is infeasible")
exit(1)
end-if

! Solution printing
forall(m in MEETINGS)
writeln("Meeting ", m, ": ", getsol(plan(m)))

end-model

`