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