# balance-size.mod -- Linear programming model for AFS server balancing. # $Id: balance-size.mod 1239 2005-02-04 08:23:20Z eagle $ # # This variation on the AMPL code doesn't balance on accesses, just on size # and volume count. It's used for balancing across partitions on a single # server. 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];