예제 #1
0
        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));
        }
예제 #2
0
 public ActComparerByRes(ActNet actNet, float tau)
 {
     this.actNet = new ActNet(actNet);
     this.tau    = tau;
     dur         = actNet.GetDuration();
 }