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