! Pack spheres of radius 1.0 inside a cube of minimum volume.
X(I), Y(I), Z(I) = coordinates of the center of sphere I.
;
! Keywords: Packing, sphere packing;
SETS:
SPHERE: X, Y, Z;
SXS(SPHERE, SPHERE) &1 #LT# &2;
ENDSETS DATA:
! Get the number of spheres;
SPHERE = 1..6 ;
! 6 spheres requires a cube of length
3.88562 on a side;
! Make sure global solver is enabled by clicking on:
LINGO  Options  Global Solver  Use Global Solver;
ENDDATA
! Min the side size of the cube enclosing all the SPHEREs;
MIN = RBIG;
! Each SPHERE of radius 1 must be inside the cube;
@FOR( SPHERE(I):
[INXL] X(I) >= 1;
[INXU] X(I) + 1 <= RBIG;
[INYL] Y(I) >= 1;
[INYU] Y(I) + 1 <= RBIG;
[INZL] Z(I) >= 1;
[INZU] Z(I) + 1 <= RBIG;
);
! Spheres I and J cannot overlap;
@FOR( SXS(I,J):
[NOVLAP] (X(I)  X(J))^2 + (Y(I)  Y(J))^2 + (Z(I)  Z(J))^2 >= (1+1)^2;
);
! Get rid of some symmetry by numbering the
spheres according to position on the X coordinate;
@FOR( SPHERE(i)  i #GT# 1:
X(i) >= X(i1);
);
