/** for step 3 */
private void sortLAndID(Shift efs, HashMap<Task, Vector<Shift>> ID,
Vector<Task> L, HashMap<Task, Integer> l,
HashMap<Task, Integer> k) {
for (int i = 0; i < L.size(); i++) {
Task task = L.get(i);
int ig = task.getResourceDemandNum();
if (ig == 1) {
Vector<Shift> v = new Vector<Shift>();
v.add(efs);
ID.put(task, v);
}
if (ig > 1) {
Vector<Shift> shiftVector = new Vector<Shift>();
for (int j = 1; j <= model.getShiftContainer().getShiftNum(); j++) {
Shift s = model.getShiftContainer().getShiftById(j);
int a = k.get(task);
int b = s.getDisengagingTime() + traffic.getDistance(s.getActualPlace(), task.getPlace(),
s.getDisengagingTime());
int c = l.get(task) + traffic.getDistance(task.getPlace(), s.getEndPlace(), l.get(task));
int d = s.getTime().getEnd() + s.getOvertime();
if (s.isNotUsable() == false && a >= b && c <= d) {
shiftVector.add(s);
}
}
if (shiftVector.size() < task.getResourceDemandNum())
{
L.remove(task);
i--;
}
if (shiftVector.size() >= task.getResourceDemandNum())
{
minShiftVector(shiftVector, task, l.get(task));
ID.put(task, shiftVector);
}
}