| |||||||||||||||||||||
Backing up files: scheduling with cumulative resource constraints Description Binpacking problem modeled as cumulative scheduling problem.
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
Data Files d4backup_ka.mos (!****************************************************** Mosel Example Problems ====================== file d4backup_ka.mos ```````````````````` Bin packing: backup of files onto floppy disks *** This model cannot be run with a Community Licence for the provided data instance *** (c) 2008 Fair Isaac Corporation author: S. Heipcke, Aug. 2005, rev. Mar. 2013 *******************************************************!) model "D-4 Bin packing (CP)" uses "kalis" declarations ND: integer ! Number of floppy disks FILES = 1..16 ! Set of files DISKS: range ! Set of disks CAP: integer ! Floppy disk size SIZE: array(FILES) of integer ! Size of files to be saved end-declarations initializations from 'd4backup.dat' CAP SIZE end-initializations ! Provide a sufficiently large number of disks ND:= ceil((sum(f in FILES) SIZE(f))/CAP) DISKS:= 1..ND finalize(DISKS) setparam("kalis_default_lb", 0) declarations save: array(FILES) of cpvar ! Disk a file is saved on use: array(FILES,DISKS) of cpvar ! Space used by file on disk diskuse: cpvar ! Number of disks used end-declarations ! Set variable domains forall(f in FILES) setdomain(save(f), DISKS) forall(f in FILES, d in DISKS) setdomain(use(f,d), {0, SIZE(f)}) ! Correspondence between disk choice and space used forall(f in FILES, d in DISKS) equiv(save(f)=d, use(f,d)=SIZE(f)) ! Limit the number of disks used diskuse = maximum(save) ! Capacity limit of disks forall(d in DISKS) sum(f in FILES) use(f,d) <= CAP ! Minimize the total number of disks used if not cp_minimize(diskuse) then writeln("Problem infeasible") end-if ! Solution printing writeln("Number of disks used: ", getsol(diskuse)) forall(d in 1..getsol(diskuse)) do write(d, ":") forall(f in FILES) write( if(getsol(save(f))=d , " "+SIZE(f), "")) writeln(" space used: ", getsol(sum(f in FILES) use(f,d))) end-do end-model | |||||||||||||||||||||
© Copyright 2023 Fair Isaac Corporation. |