Volume 6, Number 3, May 2006
elevator.mod
 
/* 
 Model name   : elevator.mod
 Description  : solves Elevator puzzles
 Source       : The Tokyo Puzzles - Kobon Fujimura 
 Date written : 7/8/06
 Written by   : Martin Chlond, Lancashire Business School
 Email        : mchlond@uclan.ac.uk 
*/

int   m = ...;
int   n = ...;
 
range  M = 1..m;
range  N = 1..n;

float  c[M,N] = ...;
dvar boolean x[M];

minimize sum(i in M) x[i];

subject to {  

  /* each pair of floors connected by at least one elevator */
  forall(j in N,k in N) sum(i in M) c[i,j]*c[i,k]*x[i] >= 1;

}

execute {

  /* format and display output */
  for(j in N) {
    for(i in M) {
      if(x[i]==1) {
       write(c[i][j]);
       write(" ");
      }
    }
    writeln();
  }
}