int nblocations = ...;
int nbclients = ...;
range locations 1..nblocations;
range clients 1..nbclients;
int costtoopen[locations]=...;
int supplycost[clients,locations]=...;
var int open[locations] in 0..1;
var float+ getsfrom[clients,locations] in 0..1;

minimize
   sum (i in clients, j in locations) supplycost[i,j]*getsfrom[i,j] +
   sum (j in locations) open[j]*costtoopen[j]

subject to {
   forall (i in clients, j in locations) getsfrom[i,j] <= open[j];
   forall (i in clients) sum (j in locations) getsfrom[i,j]=1;
};

