MODEL:
! Object bundling model. (OBJBUNDL);
!A broker has eleven loans of size ranging from $55,000 to $910,000.
The broker would like to group the loans into packages
so that each package has at least $1M in it,
and the number of packages is maximized;
! Keywords: bundling, financial, set packing;
SETS: OBJECT: VALUE, OVER;
OXO( OBJECT, OBJECT)| &1 #LE# &2: X;
ENDSETS DATA:
OBJECT = A B C D E F G H I J K;
VALUE = 910 870 810 640 550 250 120 95 55 543 449;
! The value in each bundle must be >= PKSIZE;
PKSIZE = 1000;
ENDDATA
!----------------------------------------------;
! This method may be time consuming for more
than 15 objects;
! Definition of variables;
! X( I, I) = 1 if object I is lowest numbered
object in its package;
! X( I, J) = 1 if object j is assigned to package I;
! Maximize number of packages assembled;
MAX = @SUM( OBJECT( I): X( I, I));
@FOR( OBJECT( K):
! Each object can be assigned to at most one package;
@SUM( OXO( I, K): X( I, K)) <= 1;
! A package must be at least PSIZE in size;
@SUM( OXO( K, J): VALUE( J) * X( K, J))
- OVER( K) = PKSIZE * X( K, K);
);
! The X( I, J) must = 0 or 1;
@FOR( OXO( I, J): @BIN( X( I, J)););
END
|