CirclePacking

OptiMax Sample of Circle Packing Application


TITLE
    CirclePackingUnitSquare;

OPTIONS
    ModelType=Nonlinear
    ParserType=Extended

DATA
    Circles := 3;

INDEX
    i := 1..Circles;
    j := i;

VARIABLES
    Radius;
    x[i];
    y[i];


MODEL

    MAX Radius;

SUBJECT TO

    KeepcircleA[i] -> KCA: ABS(x) + Radius <= 1/2;

    KeepcircleB[i] -> KCB: ABS(y) + Radius <= 1/2;

    NoOverlap[i,j] WHERE (i NOV:
              2 * Radius <= ((x[i] - x[i:=j])^2 + (y[i] - y[i:=j])^2)^0.5;

BOUNDS
      -0.5  <=  x  <=  0.5;
      -0.5  <=  y  <=  0.5;


END