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

 meeting.zip [download all files]

Source Files
By clicking on a file name, a preview is opened at the bottom of this page.
 meeting.mos [download] meeting2.mos [download] meeting3.mos [download] meeting4.mos [download]

meeting.mos

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

file meeting.mos

Introductory example.

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

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

model "Meeting"
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) setdomain(plan(m), TIME)

! 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