Algoritam postupka po Boxu

// Ulazne velicine: X0 (pocetna tocka)

provjeri da li za X0 vrijedi (Xd <= X0 <= Xg) te (g(X0) >= 0)

Xc = X0;

za t = 1 do 2*n // generiranje skupa 2n tocaka

{ za i = 1 do n

      R = random[0,1];

      Xi[t] = Xdi + R*(Xgi - Xdi); // nova tocka je unutar eksplicitnih ogr.

  dok postoji gi(X) za koji gi(X[t])<0 // nisu zadovoljena implicitna ogr.

      X[t] = ½ * (X[t] + Xc); // pomakni prema centroidu prihvacenih tocaka

  izracunaj novi Xc (sa novom prihvacenom tockom);

}

ponavljaj

{ odredi indekse h, h2 : F(X[h]) = max, F(X[h2]) = drugi najlosiji;

  izracunaj Xc (bez X[h]);

  Xr = (1+a)*Xc - a*X[h]; // refleksija

  za i = 1 do n

  {   ako Xri < Xdi  // pomicemo na granicu ekspl. ogranicenja

            Xri = Xdi;

      inace ako Xri > Xgi

            Xri = Xgi;

  }

  dok postoji gi(X) za koji gi(Xr)<0  // provjeravamo implicitna ogr.

        Xr = ½ * (Xr + Xc);

  ako F(Xr) > F(X[h2])  // ako je to i dalje najlosija tocka

        Xr = ½ * (Xr + Xc);  // jos jednom pomakni prema Xc

  X[h] = Xr;

} dok nije zadovoljen uvjet zaustavljanja;