public int Compare(object x, object y) { Act actX = (Act)x, actY = (Act)y; if (actX.t != actY.t) { return(actX.t.CompareTo(actY.t)); } float reservX, reservY, delta = 10000; ActNet an = new ActNet(actNet); an.ShiftActTime(actX.mark, delta); reservX = dur + delta - an.GetDuration() - (tau - actX.t); an = new ActNet(actNet); an.ShiftActTime(actY.mark, delta); reservY = dur + delta - an.GetDuration() - (tau - actY.t); if (reservX != reservY) { return(reservX.CompareTo(reservY)); } float resX = 0, resY = 0; for (int i = 0; i < actX.arrRes.Length; i++) { resX += actX.arrRes[i] / an.GetResource(i); } for (int i = 0; i < actY.arrRes.Length; i++) { resY += actY.arrRes[i] / an.GetResource(i); } if (resX != resY) { return(-resX.CompareTo(resY)); } return(actX.mark.CompareTo(actY.mark)); }
public ActComparerByRes(ActNet actNet, float tau) { this.actNet = new ActNet(actNet); this.tau = tau; dur = actNet.GetDuration(); }