public State PlusOneUnit(IMDPState s, IALPResource r) { IMDPState _s = s.Clone(); if ((_s as State).Keys.Contains(r) && (_s as State)[r] >= 0) { (_s as State)[r] += 1; } return(_s as State); }
public State MinusOneUnit(IMDPState s, IALPResource r) { IMDPState _s = s.Clone(); if ((_s as State).Keys.Contains(r) && (_s as State)[r] > 0) { (_s as State)[r] -= 1; } return(this.FirstOrDefault(i => i.Equals(_s)) as State); }
private int aik(IALPResource i, Route r) { if (r.Exists(a => a.Contains(i as Resource))) { return(1); } else { return(0); } }
public bool UseResource(IALPResource r) { return(this.openProductSet.FirstOrDefault(i => i.Contains(r)) != null); }
public int IndexOf(IALPResource item) { return(base.IndexOf((item as Resource)));//可能出现错误 }
public double Qti(int t, IALPResource re, IMDPDecision a) { return(Ro(t) * suppRoute((a as Decision).OpenProductSet). Sum(i => P(t, i, a as Decision) * aik(re, i))); }