| |||||||||||||||||
| |||||||||||||||||
|
Hybrid MIP-CP problem solving: sequential solving Description The idea of this example is to use a Constraint Programming
(CP) model to preprocess
data for an LP problem. The constraint propagation performed by the CP solver tightens the bounds on certain decision variables.
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
Data Files b1stadium_ka.mos
(!****************************************************************
CP example problems
===================
file b1stadium_ka.mos
`````````````````````
Construction of a stadium
(See "Applications of optimization with Xpress-MP",
Section 7.1 Construction of a stadium)
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, March 2005, rev. Dec. 2010
*****************************************************************!)
model "B-1 Stadium construction (CP)"
uses "kalis"
declarations
N = 19 ! Number of tasks in the project
! (last = fictitious end task)
TASKS = 1..N
ARC: dynamic array(range,range) of integer ! Matrix of the adjacency graph
DUR: array(TASKS) of integer ! Duration of tasks
HORIZON : integer ! Time horizon
start: array(TASKS) of cpvar ! Start dates of tasks
bestend: integer
end-declarations
initializations from 'Data/b1stadium.dat'
DUR ARC
end-initializations
HORIZON:= sum(j in TASKS) DUR(j)
forall(j in TASKS) do
0 <= start(j); start(j) <= HORIZON
end-do
! Task i precedes task j
forall(i, j in TASKS | exists(ARC(i, j))) do
Prec(i,j):= start(i) + DUR(i) <= start(j)
if not cp_post(Prec(i,j)) then
writeln("Posting precedence ", i, "-", j, " failed")
exit(1)
end-if
end-do
! Since there are no side-constraints, the earliest possible completion
! time is the earliest start of the fictitiuous task N
bestend:= getlb(start(N))
start(N) <= bestend
writeln("Earliest possible completion time: ", bestend)
! For tasks on the critical path the start/completion times have been fixed
! by setting the bound on the last task. For all other tasks the range of
! possible start/completion times gets displayed.
forall(j in TASKS) writeln(j, ": ", start(j))
end-model
| |||||||||||||||||
| © Copyright 2025 Fair Isaac Corporation. |