# balance.mod -- Linear programming model for AFS server balancing. # $Id: balance.mod 1239 2005-02-04 08:23:20Z eagle $ set PARTS; # partition capacities set VOLS; # volume sizes param eqnovols {PARTS} >= 0; # rougly equal no. of volumes param capacity {PARTS} >= 0; # roughly equal storage requirements param quotasum {PARTS} >= 0; # roughly equal total quotas param eqaccess {PARTS} >= 0; # roughly equal accesses param size {VOLS} >= 0; # sizes of each volume param quota {VOLS} >= 0; # quota of each volume param accesses {VOLS} >= 0; # no. accesses for each volume param located {PARTS,VOLS} binary; # where located var assigned {PARTS,VOLS} binary; # where assigned minimize total_moves: sum {i in PARTS, j in VOLS} assigned[i,j] * (1 - located[i,j]); subject to capacities {i in PARTS}: sum {j in VOLS} assigned[i,j]*size[j] >= capacity[i]; subject to uniqness {j in VOLS}: # and assignment sum {i in PARTS} assigned[i,j] = 1; subject to similarity {i in PARTS}: sum {j in VOLS} assigned[i,j] >= eqnovols[i]; subject to simaccess {i in PARTS}: sum {j in VOLS} assigned[i,j]*accesses[j] >= eqaccess[i];