for (int startTime = 1; startTime < lastTime; startTime++) { System.err.println("-----------------------------------Time " + startTime); if (inWorkSet.size() == 0 && state) { System.err.println("All is done."); break; } // 下面的for循环用于检查是否有船可靠泊 for (Vessel vessel : list) { if (startTime == vessel.getArriveTime()) { int a; if ((a = findEnoughBerth(vessel.getLength())) >= 0) { vessel.setStartLocation(a); System.out.println("Vessel " + vessel.getIndex() + " is berthed started in " + a); System.out.println("Vessel " + vessel.getIndex() + " length is " + vessel.getLength()); inWorkSet.add(vessel); state = true; currentVessel = vessel; berthAlloacte(vessel); } else { vessel.setArriveTime(vessel.getArriveTime() + 1); } } else { break; } } list.remove(currentVessel); // 下面的if是在此刻有船靠泊后为其执行。无新船靠泊就跳过 if (currentVessel != null) { while (QCS_left > 0) { if (currentVessel.getQCs_allocated() < currentVessel .getMaxQCs()) { currentVessel.setQCs_allocated(currentVessel .getQCs_allocated() + 1); QCS_left--; } else { break; } } } // 给泊位中的每艘船作业 Vessel doneVessel = null; for (Vessel vessel : inWorkSet) { System.out.println("Vessel " + vessel.getIndex() + " has QCs " + vessel.getQCs_allocated()); vessel.setWorkAmount(vessel.getWorkAmount() - vessel.getQCs_allocated()); System.out.println("Vessel " + vessel.getIndex() + " left work is " + vessel.getWorkAmount()); if (vessel.getWorkAmount() <= 0) { System.err.println("Vessel " + vessel.getIndex() + " is done."); doneVessel = vessel; QCS_left += vessel.getQCs_allocated(); unBerthShip(vessel); } } inWorkSet.remove(doneVessel); }
都是顺序执行的。Java也拼人品?咋搞呢。
好吧,既然要看完整的代码,就全贴出来。 首先是个JavaBean public class Vessel { public Vessel() { } private int index; private int arriveTime; private int length; private int workAmount; private int minQCs; private int maxQCs; private int hopeTimeToLeave; private int QCs_allocated = 0; private int time_to_end = 24; private int startLocation = -1; public int getStartLocation() { return startLocation; } public void setStartLocation(int startLocation) { this.startLocation = startLocation; } public int getLength() { return length; } public void setLength(int length) { this.length = length; } public int getQCs_allocated() { return QCs_allocated; } public void setQCs_allocated(int qCs_allocated) { QCs_allocated = qCs_allocated; } public int getTime_to_end() { return time_to_end; } public void setTime_to_end(int time_to_end) { this.time_to_end = time_to_end; } /** * 船只信息 * * @param index * 船只编号 * @param arriveTime * 到达时间 * @param length * 船只长度 * @param workAmount * 货物量 * @param min * 工作时最少的桥吊数 * @param max * 工作时最大的桥吊数 * @param hope * 期望离港时间 */ public Vessel(int index, int arriveTime, int length, int workAmount, int min, int max, int hope) { this.index = index; this.arriveTime = arriveTime; this.length = length; this.workAmount = workAmount; this.maxQCs = max; this.minQCs = min; this.hopeTimeToLeave = hope; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public int getArriveTime() { return arriveTime; } public void setArriveTime(int arriveTime) { this.arriveTime = arriveTime; } public int getWorkAmount() { return workAmount; } public void setWorkAmount(int workAmount) { this.workAmount = workAmount; } public int getMinQCs() { return minQCs; } public void setMinQCs(int minQCs) { this.minQCs = minQCs; } public int getMaxQCs() { return maxQCs; } public void setMaxQCs(int maxQCs) { this.maxQCs = maxQCs; } public int getHopeTimeToLeave() { return hopeTimeToLeave; } public void setHopeTimeToLeave(int hopeTimeToLeave) { this.hopeTimeToLeave = hopeTimeToLeave; }}然后我业务代码: public class Allocation { private final int[] BERTH_LENGTH = new int[90]; private final int QCS_AMOUNT = 8; private final int lastTime = 24; // private Vessel[] vessels = new Vessel[9]; private int berth_left[]; private int QCS_left; private List<Vessel> inWorkSet = new ArrayList<Vessel>(); private List<Vessel> list; public static Vessel[] vessels0 = new Vessel[] { new Vessel(1, 1, 13, 25, 1, 5, 6), new Vessel(2, 3, 18, 8, 1, 2, 7), new Vessel(3, 5, 20, 12, 1, 4, 8), new Vessel(4, 6, 15, 18, 1, 3, 12), new Vessel(5, 9, 14, 16, 1, 4, 13), new Vessel(6, 10, 16, 10, 1, 2, 15), new Vessel(7, 10, 22, 30, 1, 6, 15), new Vessel(8, 12, 21, 18, 1, 3, 18), new Vessel(9, 15, 18, 24, 1, 6, 19) }; private Allocation initilization() { for (int i = 0; i < 90; i++) { BERTH_LENGTH[i] = 0;// 0 presents nothing } berth_left = BERTH_LENGTH; QCS_left = QCS_AMOUNT; return this; } private void allocate() { list = new ArrayList<Vessel>(Arrays.asList(vessels0)); Vessel currentVessel = null; boolean state = false; for (int startTime = 1; startTime < lastTime; startTime++) { System.err.println("-----------------------------------Time " + startTime); if (inWorkSet.size() == 0 && state) { System.err.println("All is done."); break; } // 下面的for循环用于检查是否有船可靠泊 for (Vessel vessel : list) { if (startTime == vessel.getArriveTime()) { int a; if ((a = findEnoughBerth(vessel.getLength())) >= 0) { vessel.setStartLocation(a); System.out.println("Vessel " + vessel.getIndex() + " is berthed started in " + a); System.out.println("Vessel " + vessel.getIndex() + " length is " + vessel.getLength()); inWorkSet.add(vessel); state = true; currentVessel = vessel; berthAlloacte(vessel); } else { vessel.setArriveTime(vessel.getArriveTime() + 1); } } else { break; } } list.remove(currentVessel); // 下面的if是在此刻有船靠泊后为其执行。无新船靠泊就跳过 if (currentVessel != null) { while (QCS_left > 0) { if (currentVessel.getQCs_allocated() < currentVessel .getMaxQCs()) { currentVessel.setQCs_allocated(currentVessel .getQCs_allocated() + 1); QCS_left--; } else { break; } } } // 给泊位中的每艘船作业 Vessel doneVessel = null; for (Vessel vessel : inWorkSet) { System.out.println("Vessel " + vessel.getIndex() + " has QCs " + vessel.getQCs_allocated()); vessel.setWorkAmount(vessel.getWorkAmount() - vessel.getQCs_allocated()); System.out.println("Vessel " + vessel.getIndex() + " left work is " + vessel.getWorkAmount()); if (vessel.getWorkAmount() <= 0) { System.err.println("Vessel " + vessel.getIndex() + " is done."); doneVessel = vessel; QCS_left += vessel.getQCs_allocated(); unBerthShip(vessel); } } inWorkSet.remove(doneVessel); } } private int findEnoughBerth(int shipLength) { int find_ok = -1; boolean state = false; label: for (int i = 0; i < berth_left.length - shipLength && !state; i++) { if (berth_left[i] == 0) { for (int j = i; j < i + shipLength; j++) { if (berth_left[j] == 1) { i = j; continue label; } } find_ok = i; state = true; for (int j = i; j < i + shipLength; j++) { berth_left[j] = 1; } } } return find_ok; } private void berthAlloacte(Vessel vessel) { for (int i = vessel.getStartLocation(); i < vessel.getStartLocation() + vessel.getLength(); i++) { berth_left[i] = 1; } } private void unBerthShip(Vessel vessel) { for (int i = vessel.getStartLocation(); i < vessel.getStartLocation() + vessel.getLength(); i++) { berth_left[i] = 0; } } public static void main(String[] args) { Allocation allocation = new Allocation(); allocation.initilization().allocate(); }}
-----------------------------------Time 1 -----------------------------------Time 2 -----------------------------------Time 3 Vessel 1 is berthed started in 0 Vessel 1 length is 13 Vessel 1 has QCs 5 Vessel 1 left work is 20 Vessel 1 has QCs 5 Vessel 1 left work is 15 Vessel 2 is berthed started in 13 Vessel 2 length is 18 Vessel 1 has QCs 5 Vessel 1 left work is 10 Vessel 2 has QCs 2 Vessel 2 left work is 6 Vessel 1 has QCs 5 Vessel 1 left work is 5 Vessel 2 has QCs 2 Vessel 2 left work is 4 -----------------------------------Time 4 -----------------------------------Time 5 Vessel 3 is berthed started in 31 Vessel 3 length is 20 Vessel 1 has QCs 5 Vessel 1 left work is 0 Vessel 2 has QCs 2 Vessel 2 left work is 2 Vessel 3 has QCs 1 Vessel 3 left work is 11 Vessel 4 is berthed started in 51 Vessel 4 length is 15 Vessel 2 has QCs 2 Vessel 1 is done. -----------------------------------Time 6 Vessel 2 left work is 0 Vessel 2 is done. Vessel 3 has QCs 1 Vessel 3 left work is 10 Vessel 4 has QCs 3 Vessel 4 left work is 15 -----------------------------------Time 7 Vessel 3 has QCs 1 Vessel 3 left work is 9 Vessel 4 has QCs 3 -----------------------------------Time 8 Vessel 4 left work is 12 Vessel 3 has QCs 1 Vessel 3 left work is 8 Vessel 4 has QCs 3 Vessel 4 left work is 9 -----------------------------------Time 9 -----------------------------------Time 10 -----------------------------------Time 11 Vessel 5 is berthed started in 0 Vessel 5 length is 14 Vessel 3 has QCs 1 Vessel 3 left work is 7 Vessel 4 has QCs 3 Vessel 4 left work is 6 Vessel 5 has QCs 4 Vessel 5 left work is 12 Vessel 6 is berthed started in 14 Vessel 6 length is 16 Vessel 7 is berthed started in 66 Vessel 7 length is 22 Vessel 3 has QCs 1 Vessel 3 left work is 6 Vessel 4 has QCs 3 Vessel 4 left work is 3 Vessel 5 has QCs 4 Vessel 5 left work is 8 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 0 Vessel 7 left work is 30 Vessel 3 has QCs 1Vessel 4 is done. -----------------------------------Time 12 Vessel 5 is done. -----------------------------------Time 13Vessel 3 left work is 5 Vessel 4 has QCs 3 Vessel 4 left work is 0 Vessel 5 has QCs 4 Vessel 5 left work is 4 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 0 Vessel 7 left work is 30 Vessel 3 has QCs 1 Vessel 3 left work is 4 Vessel 5 has QCs 4 Vessel 5 left work is 0 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 3 Vessel 7 left work is 27 Vessel 3 has QCs 1 Vessel 3 left work is 3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 21 -----------------------------------Time 14 -----------------------------------Time 15 -----------------------------------Time 16 Vessel 3 is done. -----------------------------------Time 17 Vessel 7 is done. -----------------------------------Time 18 Vessel 3 has QCs 1 Vessel 3 left work is 2 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 15 Vessel 3 has QCs 1 Vessel 3 left work is 1 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 9 Vessel 3 has QCs 1 Vessel 3 left work is 0 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is -3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0-----------------------------------Time 19Vessel 6 left work is 10 -----------------------------------Time 20 -----------------------------------Time 21 -----------------------------------Time 22 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 -----------------------------------Time 23 Vessel 6 has QCs 0 Vessel 6 left work is 10
-----------------------------------Time 1 -----------------------------------Time 2 -----------------------------------Time 3 Vessel 1 is berthed started in 0 Vessel 1 length is 13 Vessel 1 has QCs 5 Vessel 1 left work is 20 Vessel 1 has QCs 5 Vessel 1 left work is 15 Vessel 2 is berthed started in 13 Vessel 2 length is 18 Vessel 1 has QCs 5 Vessel 1 left work is 10 Vessel 2 has QCs 2 Vessel 2 left work is 6 Vessel 1 has QCs 5 Vessel 1 left work is 5 Vessel 2 has QCs 2 Vessel 2 left work is 4 -----------------------------------Time 4 -----------------------------------Time 5 Vessel 3 is berthed started in 31 Vessel 3 length is 20 Vessel 1 has QCs 5 Vessel 1 left work is 0 Vessel 2 has QCs 2 Vessel 2 left work is 2 Vessel 3 has QCs 1 Vessel 3 left work is 11 Vessel 4 is berthed started in 51 Vessel 4 length is 15 Vessel 2 has QCs 2 Vessel 1 is done. -----------------------------------Time 6 Vessel 2 left work is 0 Vessel 2 is done. Vessel 3 has QCs 1 Vessel 3 left work is 10 Vessel 4 has QCs 3 Vessel 4 left work is 15 -----------------------------------Time 7 Vessel 3 has QCs 1 Vessel 3 left work is 9 Vessel 4 has QCs 3 -----------------------------------Time 8 Vessel 4 left work is 12 Vessel 3 has QCs 1 Vessel 3 left work is 8 Vessel 4 has QCs 3 Vessel 4 left work is 9 -----------------------------------Time 9 -----------------------------------Time 10 -----------------------------------Time 11 Vessel 5 is berthed started in 0 Vessel 5 length is 14 Vessel 3 has QCs 1 Vessel 3 left work is 7 Vessel 4 has QCs 3 Vessel 4 left work is 6 Vessel 5 has QCs 4 Vessel 5 left work is 12 Vessel 6 is berthed started in 14 Vessel 6 length is 16 Vessel 7 is berthed started in 66 Vessel 7 length is 22 Vessel 3 has QCs 1 Vessel 3 left work is 6 Vessel 4 has QCs 3 Vessel 4 left work is 3 Vessel 5 has QCs 4 Vessel 5 left work is 8 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 0 Vessel 7 left work is 30 Vessel 3 has QCs 1Vessel 4 is done. -----------------------------------Time 12 Vessel 5 is done. -----------------------------------Time 13Vessel 3 left work is 5 Vessel 4 has QCs 3 Vessel 4 left work is 0 Vessel 5 has QCs 4 Vessel 5 left work is 4 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 0 Vessel 7 left work is 30 Vessel 3 has QCs 1 Vessel 3 left work is 4 Vessel 5 has QCs 4 Vessel 5 left work is 0 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 3 Vessel 7 left work is 27 Vessel 3 has QCs 1 Vessel 3 left work is 3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 21 -----------------------------------Time 14 -----------------------------------Time 15 -----------------------------------Time 16 Vessel 3 is done. -----------------------------------Time 17 Vessel 7 is done. -----------------------------------Time 18 Vessel 3 has QCs 1 Vessel 3 left work is 2 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 15 Vessel 3 has QCs 1 Vessel 3 left work is 1 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 9 Vessel 3 has QCs 1 Vessel 3 left work is 0 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is -3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0-----------------------------------Time 19Vessel 6 left work is 10 -----------------------------------Time 20 -----------------------------------Time 21 -----------------------------------Time 22 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 -----------------------------------Time 23 Vessel 6 has QCs 0 Vessel 6 left work is 10 结果就是这个样子的然后不知道楼主的问题是什么问题。
-----------------------------------Time 1 -----------------------------------Time 2 -----------------------------------Time 3 -----------------------------------Time 4 -----------------------------------Time 5 Vessel 1 is done. -----------------------------------Time 6 Vessel 2 is done. -----------------------------------Time 7 -----------------------------------Time 8 -----------------------------------Time 9 Vessel 1 is berthed started in 0 Vessel 1 length is 13 Vessel 1 has QCs 5 Vessel 1 left work is 20 Vessel 1 has QCs 5 Vessel 1 left work is 15 Vessel 2 is berthed started in 13 Vessel 2 length is 18 Vessel 1 has QCs 5 Vessel 1 left work is 10 Vessel 2 has QCs 2 Vessel 2 left work is 6 Vessel 1 has QCs 5 Vessel 1 left work is 5 Vessel 2 has QCs 2 Vessel 2 left work is 4 Vessel 3 is berthed started in 31 Vessel 3 length is 20 Vessel 1 has QCs 5 Vessel 1 left work is 0 Vessel 2 has QCs 2 Vessel 2 left work is 2 Vessel 3 has QCs 1-----------------------------------Time 10 -----------------------------------Time 11 Vessel 4 is done. -----------------------------------Time 12 Vessel 5 is done. -----------------------------------Time 13 -----------------------------------Time 14 -----------------------------------Time 15 -----------------------------------Time 16 Vessel 3 is done. -----------------------------------Time 17 Vessel 7 is done. -----------------------------------Time 18 -----------------------------------Time 19 -----------------------------------Time 20 -----------------------------------Time 21 -----------------------------------Time 22 -----------------------------------Time 23Vessel 3 left work is 11 Vessel 4 is berthed started in 51 Vessel 4 length is 15 Vessel 2 has QCs 2 Vessel 2 left work is 0 Vessel 3 has QCs 1 Vessel 3 left work is 10 Vessel 4 has QCs 3 Vessel 4 left work is 15 Vessel 3 has QCs 1 Vessel 3 left work is 9 Vessel 4 has QCs 3 Vessel 4 left work is 12 Vessel 3 has QCs 1 Vessel 3 left work is 8 Vessel 4 has QCs 3 Vessel 4 left work is 9 Vessel 5 is berthed started in 0 Vessel 5 length is 14 Vessel 3 has QCs 1 Vessel 3 left work is 7 Vessel 4 has QCs 3 Vessel 4 left work is 6 Vessel 5 has QCs 4 Vessel 5 left work is 12 Vessel 6 is berthed started in 14 Vessel 6 length is 16 Vessel 7 is berthed started in 66 Vessel 7 length is 22 Vessel 3 has QCs 1 Vessel 3 left work is 6 Vessel 4 has QCs 3 Vessel 4 left work is 3 Vessel 5 has QCs 4 Vessel 5 left work is 8 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 0 Vessel 7 left work is 30 Vessel 3 has QCs 1 Vessel 3 left work is 5 Vessel 4 has QCs 3 Vessel 4 left work is 0 Vessel 5 has QCs 4 Vessel 5 left work is 4 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 0 Vessel 7 left work is 30 Vessel 3 has QCs 1 Vessel 3 left work is 4 Vessel 5 has QCs 4 Vessel 5 left work is 0 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 3 Vessel 7 left work is 27 Vessel 3 has QCs 1 Vessel 3 left work is 3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 21 Vessel 3 has QCs 1 Vessel 3 left work is 2 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 15 Vessel 3 has QCs 1 Vessel 3 left work is 1 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 9 Vessel 3 has QCs 1 Vessel 3 left work is 0 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is -3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 这是我的运行结果。然后再运行一次-----------------------------------Time 1 Vessel 1 is berthed started in 0 Vessel 1 length is 13 -----------------------------------Time 2 Vessel 1 has QCs 5 Vessel 1 left work is 20 Vessel 1 has QCs 5 Vessel 1 left work is 15 -----------------------------------Time 3 Vessel 2 is berthed started in 13 Vessel 2 length is 18 Vessel 1 has QCs 5 Vessel 1 left work is 10 Vessel 2 has QCs 2 Vessel 2 left work is 6 -----------------------------------Time 4 Vessel 1 has QCs 5 Vessel 1 left work is 5 Vessel 2 has QCs 2 Vessel 2 left work is 4 -----------------------------------Time 5 Vessel 3 is berthed started in 31 Vessel 3 length is 20 Vessel 1 has QCs 5 Vessel 1 left work is 0 Vessel 1 is done. Vessel 2 has QCs 2 Vessel 2 left work is 2 Vessel 3 has QCs 1 Vessel 3 left work is 11 -----------------------------------Time 6 Vessel 4 is berthed started in 51 Vessel 4 length is 15 Vessel 2 has QCs 2 Vessel 2 left work is 0 Vessel 2 is done. Vessel 3 has QCs 1 Vessel 3 left work is 10 Vessel 4 has QCs 3 Vessel 4 left work is 15 -----------------------------------Time 7 Vessel 3 has QCs 1 Vessel 3 left work is 9 Vessel 4 has QCs 3 Vessel 4 left work is 12 -----------------------------------Time 8 Vessel 3 has QCs 1 Vessel 3 left work is 8 Vessel 4 has QCs 3 Vessel 4 left work is 9-----------------------------------Time 9 -----------------------------------Time 10 -----------------------------------Time 11 Vessel 4 is done. -----------------------------------Time 12 Vessel 5 is done. -----------------------------------Time 13 -----------------------------------Time 14 -----------------------------------Time 15 -----------------------------------Time 16 Vessel 3 is done. -----------------------------------Time 17 Vessel 7 is done. -----------------------------------Time 18 -----------------------------------Time 19 -----------------------------------Time 20 -----------------------------------Time 21 -----------------------------------Time 22 -----------------------------------Time 23Vessel 5 is berthed started in 0 Vessel 5 length is 14 Vessel 3 has QCs 1 Vessel 3 left work is 7 Vessel 4 has QCs 3 Vessel 4 left work is 6 Vessel 5 has QCs 4 Vessel 5 left work is 12 Vessel 6 is berthed started in 14 Vessel 6 length is 16 Vessel 7 is berthed started in 66 Vessel 7 length is 22 Vessel 3 has QCs 1 Vessel 3 left work is 6 Vessel 4 has QCs 3 Vessel 4 left work is 3 Vessel 5 has QCs 4 Vessel 5 left work is 8 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 0 Vessel 7 left work is 30 Vessel 3 has QCs 1 Vessel 3 left work is 5 Vessel 4 has QCs 3 Vessel 4 left work is 0 Vessel 5 has QCs 4 Vessel 5 left work is 4 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 0 Vessel 7 left work is 30 Vessel 3 has QCs 1 Vessel 3 left work is 4 Vessel 5 has QCs 4 Vessel 5 left work is 0 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 3 Vessel 7 left work is 27 Vessel 3 has QCs 1 Vessel 3 left work is 3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 21 Vessel 3 has QCs 1 Vessel 3 left work is 2 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 15 Vessel 3 has QCs 1 Vessel 3 left work is 1 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 9 Vessel 3 has QCs 1 Vessel 3 left work is 0 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is 3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 7 has QCs 6 Vessel 7 left work is -3 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10 Vessel 6 has QCs 0 Vessel 6 left work is 10
System.err.println("-----------------------------------Time "
+ startTime);
if (inWorkSet.size() == 0 && state) {
System.err.println("All is done.");
break;
}
// 下面的for循环用于检查是否有船可靠泊
for (Vessel vessel : list) {
if (startTime == vessel.getArriveTime()) {
int a;
if ((a = findEnoughBerth(vessel.getLength())) >= 0) {
vessel.setStartLocation(a);
System.out.println("Vessel " + vessel.getIndex()
+ " is berthed started in " + a);
System.out.println("Vessel " + vessel.getIndex()
+ " length is " + vessel.getLength());
inWorkSet.add(vessel);
state = true;
currentVessel = vessel;
berthAlloacte(vessel);
} else {
vessel.setArriveTime(vessel.getArriveTime() + 1);
}
} else {
break;
}
}
list.remove(currentVessel);
// 下面的if是在此刻有船靠泊后为其执行。无新船靠泊就跳过
if (currentVessel != null) {
while (QCS_left > 0) {
if (currentVessel.getQCs_allocated() < currentVessel
.getMaxQCs()) {
currentVessel.setQCs_allocated(currentVessel
.getQCs_allocated() + 1);
QCS_left--;
} else {
break;
}
}
} // 给泊位中的每艘船作业
Vessel doneVessel = null;
for (Vessel vessel : inWorkSet) {
System.out.println("Vessel " + vessel.getIndex() + " has QCs "
+ vessel.getQCs_allocated());
vessel.setWorkAmount(vessel.getWorkAmount()
- vessel.getQCs_allocated());
System.out.println("Vessel " + vessel.getIndex()
+ " left work is " + vessel.getWorkAmount());
if (vessel.getWorkAmount() <= 0) {
System.err.println("Vessel " + vessel.getIndex()
+ " is done.");
doneVessel = vessel;
QCS_left += vessel.getQCs_allocated();
unBerthShip(vessel);
}
}
inWorkSet.remove(doneVessel);
}
首先是个JavaBean
public class Vessel {
public Vessel() {
} private int index;
private int arriveTime;
private int length;
private int workAmount;
private int minQCs;
private int maxQCs;
private int hopeTimeToLeave; private int QCs_allocated = 0;
private int time_to_end = 24;
private int startLocation = -1; public int getStartLocation() {
return startLocation;
} public void setStartLocation(int startLocation) {
this.startLocation = startLocation;
} public int getLength() {
return length;
} public void setLength(int length) {
this.length = length;
} public int getQCs_allocated() {
return QCs_allocated;
} public void setQCs_allocated(int qCs_allocated) {
QCs_allocated = qCs_allocated;
} public int getTime_to_end() {
return time_to_end;
} public void setTime_to_end(int time_to_end) {
this.time_to_end = time_to_end;
} /**
* 船只信息
*
* @param index
* 船只编号
* @param arriveTime
* 到达时间
* @param length
* 船只长度
* @param workAmount
* 货物量
* @param min
* 工作时最少的桥吊数
* @param max
* 工作时最大的桥吊数
* @param hope
* 期望离港时间
*/
public Vessel(int index, int arriveTime, int length, int workAmount,
int min, int max, int hope) {
this.index = index;
this.arriveTime = arriveTime;
this.length = length;
this.workAmount = workAmount;
this.maxQCs = max;
this.minQCs = min;
this.hopeTimeToLeave = hope;
} public int getIndex() {
return index;
} public void setIndex(int index) {
this.index = index;
} public int getArriveTime() {
return arriveTime;
} public void setArriveTime(int arriveTime) {
this.arriveTime = arriveTime;
} public int getWorkAmount() {
return workAmount;
} public void setWorkAmount(int workAmount) {
this.workAmount = workAmount;
} public int getMinQCs() {
return minQCs;
} public void setMinQCs(int minQCs) {
this.minQCs = minQCs;
} public int getMaxQCs() {
return maxQCs;
} public void setMaxQCs(int maxQCs) {
this.maxQCs = maxQCs;
} public int getHopeTimeToLeave() {
return hopeTimeToLeave;
} public void setHopeTimeToLeave(int hopeTimeToLeave) {
this.hopeTimeToLeave = hopeTimeToLeave;
}}然后我业务代码:
public class Allocation {
private final int[] BERTH_LENGTH = new int[90];
private final int QCS_AMOUNT = 8;
private final int lastTime = 24; // private Vessel[] vessels = new Vessel[9];
private int berth_left[];
private int QCS_left;
private List<Vessel> inWorkSet = new ArrayList<Vessel>();
private List<Vessel> list; public static Vessel[] vessels0 = new Vessel[] {
new Vessel(1, 1, 13, 25, 1, 5, 6),
new Vessel(2, 3, 18, 8, 1, 2, 7),
new Vessel(3, 5, 20, 12, 1, 4, 8),
new Vessel(4, 6, 15, 18, 1, 3, 12),
new Vessel(5, 9, 14, 16, 1, 4, 13),
new Vessel(6, 10, 16, 10, 1, 2, 15),
new Vessel(7, 10, 22, 30, 1, 6, 15),
new Vessel(8, 12, 21, 18, 1, 3, 18),
new Vessel(9, 15, 18, 24, 1, 6, 19) }; private Allocation initilization() {
for (int i = 0; i < 90; i++) {
BERTH_LENGTH[i] = 0;// 0 presents nothing
}
berth_left = BERTH_LENGTH;
QCS_left = QCS_AMOUNT;
return this;
} private void allocate() {
list = new ArrayList<Vessel>(Arrays.asList(vessels0));
Vessel currentVessel = null;
boolean state = false;
for (int startTime = 1; startTime < lastTime; startTime++) {
System.err.println("-----------------------------------Time "
+ startTime);
if (inWorkSet.size() == 0 && state) {
System.err.println("All is done.");
break;
}
// 下面的for循环用于检查是否有船可靠泊
for (Vessel vessel : list) {
if (startTime == vessel.getArriveTime()) {
int a;
if ((a = findEnoughBerth(vessel.getLength())) >= 0) {
vessel.setStartLocation(a);
System.out.println("Vessel " + vessel.getIndex()
+ " is berthed started in " + a);
System.out.println("Vessel " + vessel.getIndex()
+ " length is " + vessel.getLength());
inWorkSet.add(vessel);
state = true;
currentVessel = vessel;
berthAlloacte(vessel);
} else {
vessel.setArriveTime(vessel.getArriveTime() + 1);
}
} else {
break;
}
}
list.remove(currentVessel);
// 下面的if是在此刻有船靠泊后为其执行。无新船靠泊就跳过
if (currentVessel != null) {
while (QCS_left > 0) {
if (currentVessel.getQCs_allocated() < currentVessel
.getMaxQCs()) {
currentVessel.setQCs_allocated(currentVessel
.getQCs_allocated() + 1);
QCS_left--;
} else {
break;
}
}
} // 给泊位中的每艘船作业
Vessel doneVessel = null;
for (Vessel vessel : inWorkSet) {
System.out.println("Vessel " + vessel.getIndex() + " has QCs "
+ vessel.getQCs_allocated());
vessel.setWorkAmount(vessel.getWorkAmount()
- vessel.getQCs_allocated());
System.out.println("Vessel " + vessel.getIndex()
+ " left work is " + vessel.getWorkAmount());
if (vessel.getWorkAmount() <= 0) {
System.err.println("Vessel " + vessel.getIndex()
+ " is done.");
doneVessel = vessel;
QCS_left += vessel.getQCs_allocated();
unBerthShip(vessel);
}
}
inWorkSet.remove(doneVessel);
}
} private int findEnoughBerth(int shipLength) {
int find_ok = -1;
boolean state = false;
label: for (int i = 0; i < berth_left.length - shipLength && !state; i++) {
if (berth_left[i] == 0) {
for (int j = i; j < i + shipLength; j++) {
if (berth_left[j] == 1) {
i = j;
continue label;
}
}
find_ok = i;
state = true;
for (int j = i; j < i + shipLength; j++) {
berth_left[j] = 1;
}
}
}
return find_ok;
} private void berthAlloacte(Vessel vessel) {
for (int i = vessel.getStartLocation(); i < vessel.getStartLocation()
+ vessel.getLength(); i++) {
berth_left[i] = 1;
}
} private void unBerthShip(Vessel vessel) {
for (int i = vessel.getStartLocation(); i < vessel.getStartLocation()
+ vessel.getLength(); i++) {
berth_left[i] = 0;
}
} public static void main(String[] args) {
Allocation allocation = new Allocation();
allocation.initilization().allocate();
}}
-----------------------------------Time 1
-----------------------------------Time 2
-----------------------------------Time 3
Vessel 1 is berthed started in 0
Vessel 1 length is 13
Vessel 1 has QCs 5
Vessel 1 left work is 20
Vessel 1 has QCs 5
Vessel 1 left work is 15
Vessel 2 is berthed started in 13
Vessel 2 length is 18
Vessel 1 has QCs 5
Vessel 1 left work is 10
Vessel 2 has QCs 2
Vessel 2 left work is 6
Vessel 1 has QCs 5
Vessel 1 left work is 5
Vessel 2 has QCs 2
Vessel 2 left work is 4
-----------------------------------Time 4
-----------------------------------Time 5
Vessel 3 is berthed started in 31
Vessel 3 length is 20
Vessel 1 has QCs 5
Vessel 1 left work is 0
Vessel 2 has QCs 2
Vessel 2 left work is 2
Vessel 3 has QCs 1
Vessel 3 left work is 11
Vessel 4 is berthed started in 51
Vessel 4 length is 15
Vessel 2 has QCs 2
Vessel 1 is done.
-----------------------------------Time 6
Vessel 2 left work is 0
Vessel 2 is done.
Vessel 3 has QCs 1
Vessel 3 left work is 10
Vessel 4 has QCs 3
Vessel 4 left work is 15
-----------------------------------Time 7
Vessel 3 has QCs 1
Vessel 3 left work is 9
Vessel 4 has QCs 3
-----------------------------------Time 8
Vessel 4 left work is 12
Vessel 3 has QCs 1
Vessel 3 left work is 8
Vessel 4 has QCs 3
Vessel 4 left work is 9
-----------------------------------Time 9
-----------------------------------Time 10
-----------------------------------Time 11
Vessel 5 is berthed started in 0
Vessel 5 length is 14
Vessel 3 has QCs 1
Vessel 3 left work is 7
Vessel 4 has QCs 3
Vessel 4 left work is 6
Vessel 5 has QCs 4
Vessel 5 left work is 12
Vessel 6 is berthed started in 14
Vessel 6 length is 16
Vessel 7 is berthed started in 66
Vessel 7 length is 22
Vessel 3 has QCs 1
Vessel 3 left work is 6
Vessel 4 has QCs 3
Vessel 4 left work is 3
Vessel 5 has QCs 4
Vessel 5 left work is 8
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 0
Vessel 7 left work is 30
Vessel 3 has QCs 1Vessel 4 is done.
-----------------------------------Time 12
Vessel 5 is done.
-----------------------------------Time 13Vessel 3 left work is 5
Vessel 4 has QCs 3
Vessel 4 left work is 0
Vessel 5 has QCs 4
Vessel 5 left work is 4
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 0
Vessel 7 left work is 30
Vessel 3 has QCs 1
Vessel 3 left work is 4
Vessel 5 has QCs 4
Vessel 5 left work is 0
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 3
Vessel 7 left work is 27
Vessel 3 has QCs 1
Vessel 3 left work is 3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 21
-----------------------------------Time 14
-----------------------------------Time 15
-----------------------------------Time 16
Vessel 3 is done.
-----------------------------------Time 17
Vessel 7 is done.
-----------------------------------Time 18
Vessel 3 has QCs 1
Vessel 3 left work is 2
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 15
Vessel 3 has QCs 1
Vessel 3 left work is 1
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 9
Vessel 3 has QCs 1
Vessel 3 left work is 0
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is -3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0-----------------------------------Time 19Vessel 6 left work is 10
-----------------------------------Time 20
-----------------------------------Time 21
-----------------------------------Time 22
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
-----------------------------------Time 23
Vessel 6 has QCs 0
Vessel 6 left work is 10
-----------------------------------Time 2
-----------------------------------Time 3
Vessel 1 is berthed started in 0
Vessel 1 length is 13
Vessel 1 has QCs 5
Vessel 1 left work is 20
Vessel 1 has QCs 5
Vessel 1 left work is 15
Vessel 2 is berthed started in 13
Vessel 2 length is 18
Vessel 1 has QCs 5
Vessel 1 left work is 10
Vessel 2 has QCs 2
Vessel 2 left work is 6
Vessel 1 has QCs 5
Vessel 1 left work is 5
Vessel 2 has QCs 2
Vessel 2 left work is 4
-----------------------------------Time 4
-----------------------------------Time 5
Vessel 3 is berthed started in 31
Vessel 3 length is 20
Vessel 1 has QCs 5
Vessel 1 left work is 0
Vessel 2 has QCs 2
Vessel 2 left work is 2
Vessel 3 has QCs 1
Vessel 3 left work is 11
Vessel 4 is berthed started in 51
Vessel 4 length is 15
Vessel 2 has QCs 2
Vessel 1 is done.
-----------------------------------Time 6
Vessel 2 left work is 0
Vessel 2 is done.
Vessel 3 has QCs 1
Vessel 3 left work is 10
Vessel 4 has QCs 3
Vessel 4 left work is 15
-----------------------------------Time 7
Vessel 3 has QCs 1
Vessel 3 left work is 9
Vessel 4 has QCs 3
-----------------------------------Time 8
Vessel 4 left work is 12
Vessel 3 has QCs 1
Vessel 3 left work is 8
Vessel 4 has QCs 3
Vessel 4 left work is 9
-----------------------------------Time 9
-----------------------------------Time 10
-----------------------------------Time 11
Vessel 5 is berthed started in 0
Vessel 5 length is 14
Vessel 3 has QCs 1
Vessel 3 left work is 7
Vessel 4 has QCs 3
Vessel 4 left work is 6
Vessel 5 has QCs 4
Vessel 5 left work is 12
Vessel 6 is berthed started in 14
Vessel 6 length is 16
Vessel 7 is berthed started in 66
Vessel 7 length is 22
Vessel 3 has QCs 1
Vessel 3 left work is 6
Vessel 4 has QCs 3
Vessel 4 left work is 3
Vessel 5 has QCs 4
Vessel 5 left work is 8
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 0
Vessel 7 left work is 30
Vessel 3 has QCs 1Vessel 4 is done.
-----------------------------------Time 12
Vessel 5 is done.
-----------------------------------Time 13Vessel 3 left work is 5
Vessel 4 has QCs 3
Vessel 4 left work is 0
Vessel 5 has QCs 4
Vessel 5 left work is 4
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 0
Vessel 7 left work is 30
Vessel 3 has QCs 1
Vessel 3 left work is 4
Vessel 5 has QCs 4
Vessel 5 left work is 0
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 3
Vessel 7 left work is 27
Vessel 3 has QCs 1
Vessel 3 left work is 3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 21
-----------------------------------Time 14
-----------------------------------Time 15
-----------------------------------Time 16
Vessel 3 is done.
-----------------------------------Time 17
Vessel 7 is done.
-----------------------------------Time 18
Vessel 3 has QCs 1
Vessel 3 left work is 2
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 15
Vessel 3 has QCs 1
Vessel 3 left work is 1
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 9
Vessel 3 has QCs 1
Vessel 3 left work is 0
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is -3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0-----------------------------------Time 19Vessel 6 left work is 10
-----------------------------------Time 20
-----------------------------------Time 21
-----------------------------------Time 22
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
-----------------------------------Time 23
Vessel 6 has QCs 0
Vessel 6 left work is 10
结果就是这个样子的然后不知道楼主的问题是什么问题。
-----------------------------------Time 2
-----------------------------------Time 3
-----------------------------------Time 4
-----------------------------------Time 5
Vessel 1 is done.
-----------------------------------Time 6
Vessel 2 is done.
-----------------------------------Time 7
-----------------------------------Time 8
-----------------------------------Time 9
Vessel 1 is berthed started in 0
Vessel 1 length is 13
Vessel 1 has QCs 5
Vessel 1 left work is 20
Vessel 1 has QCs 5
Vessel 1 left work is 15
Vessel 2 is berthed started in 13
Vessel 2 length is 18
Vessel 1 has QCs 5
Vessel 1 left work is 10
Vessel 2 has QCs 2
Vessel 2 left work is 6
Vessel 1 has QCs 5
Vessel 1 left work is 5
Vessel 2 has QCs 2
Vessel 2 left work is 4
Vessel 3 is berthed started in 31
Vessel 3 length is 20
Vessel 1 has QCs 5
Vessel 1 left work is 0
Vessel 2 has QCs 2
Vessel 2 left work is 2
Vessel 3 has QCs 1-----------------------------------Time 10
-----------------------------------Time 11
Vessel 4 is done.
-----------------------------------Time 12
Vessel 5 is done.
-----------------------------------Time 13
-----------------------------------Time 14
-----------------------------------Time 15
-----------------------------------Time 16
Vessel 3 is done.
-----------------------------------Time 17
Vessel 7 is done.
-----------------------------------Time 18
-----------------------------------Time 19
-----------------------------------Time 20
-----------------------------------Time 21
-----------------------------------Time 22
-----------------------------------Time 23Vessel 3 left work is 11
Vessel 4 is berthed started in 51
Vessel 4 length is 15
Vessel 2 has QCs 2
Vessel 2 left work is 0
Vessel 3 has QCs 1
Vessel 3 left work is 10
Vessel 4 has QCs 3
Vessel 4 left work is 15
Vessel 3 has QCs 1
Vessel 3 left work is 9
Vessel 4 has QCs 3
Vessel 4 left work is 12
Vessel 3 has QCs 1
Vessel 3 left work is 8
Vessel 4 has QCs 3
Vessel 4 left work is 9
Vessel 5 is berthed started in 0
Vessel 5 length is 14
Vessel 3 has QCs 1
Vessel 3 left work is 7
Vessel 4 has QCs 3
Vessel 4 left work is 6
Vessel 5 has QCs 4
Vessel 5 left work is 12
Vessel 6 is berthed started in 14
Vessel 6 length is 16
Vessel 7 is berthed started in 66
Vessel 7 length is 22
Vessel 3 has QCs 1
Vessel 3 left work is 6
Vessel 4 has QCs 3
Vessel 4 left work is 3
Vessel 5 has QCs 4
Vessel 5 left work is 8
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 0
Vessel 7 left work is 30
Vessel 3 has QCs 1
Vessel 3 left work is 5
Vessel 4 has QCs 3
Vessel 4 left work is 0
Vessel 5 has QCs 4
Vessel 5 left work is 4
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 0
Vessel 7 left work is 30
Vessel 3 has QCs 1
Vessel 3 left work is 4
Vessel 5 has QCs 4
Vessel 5 left work is 0
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 3
Vessel 7 left work is 27
Vessel 3 has QCs 1
Vessel 3 left work is 3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 21
Vessel 3 has QCs 1
Vessel 3 left work is 2
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 15
Vessel 3 has QCs 1
Vessel 3 left work is 1
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 9
Vessel 3 has QCs 1
Vessel 3 left work is 0
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is -3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
这是我的运行结果。然后再运行一次-----------------------------------Time 1
Vessel 1 is berthed started in 0
Vessel 1 length is 13
-----------------------------------Time 2
Vessel 1 has QCs 5
Vessel 1 left work is 20
Vessel 1 has QCs 5
Vessel 1 left work is 15
-----------------------------------Time 3
Vessel 2 is berthed started in 13
Vessel 2 length is 18
Vessel 1 has QCs 5
Vessel 1 left work is 10
Vessel 2 has QCs 2
Vessel 2 left work is 6
-----------------------------------Time 4
Vessel 1 has QCs 5
Vessel 1 left work is 5
Vessel 2 has QCs 2
Vessel 2 left work is 4
-----------------------------------Time 5
Vessel 3 is berthed started in 31
Vessel 3 length is 20
Vessel 1 has QCs 5
Vessel 1 left work is 0
Vessel 1 is done.
Vessel 2 has QCs 2
Vessel 2 left work is 2
Vessel 3 has QCs 1
Vessel 3 left work is 11
-----------------------------------Time 6
Vessel 4 is berthed started in 51
Vessel 4 length is 15
Vessel 2 has QCs 2
Vessel 2 left work is 0
Vessel 2 is done.
Vessel 3 has QCs 1
Vessel 3 left work is 10
Vessel 4 has QCs 3
Vessel 4 left work is 15
-----------------------------------Time 7
Vessel 3 has QCs 1
Vessel 3 left work is 9
Vessel 4 has QCs 3
Vessel 4 left work is 12
-----------------------------------Time 8
Vessel 3 has QCs 1
Vessel 3 left work is 8
Vessel 4 has QCs 3
Vessel 4 left work is 9-----------------------------------Time 9
-----------------------------------Time 10
-----------------------------------Time 11
Vessel 4 is done.
-----------------------------------Time 12
Vessel 5 is done.
-----------------------------------Time 13
-----------------------------------Time 14
-----------------------------------Time 15
-----------------------------------Time 16
Vessel 3 is done.
-----------------------------------Time 17
Vessel 7 is done.
-----------------------------------Time 18
-----------------------------------Time 19
-----------------------------------Time 20
-----------------------------------Time 21
-----------------------------------Time 22
-----------------------------------Time 23Vessel 5 is berthed started in 0
Vessel 5 length is 14
Vessel 3 has QCs 1
Vessel 3 left work is 7
Vessel 4 has QCs 3
Vessel 4 left work is 6
Vessel 5 has QCs 4
Vessel 5 left work is 12
Vessel 6 is berthed started in 14
Vessel 6 length is 16
Vessel 7 is berthed started in 66
Vessel 7 length is 22
Vessel 3 has QCs 1
Vessel 3 left work is 6
Vessel 4 has QCs 3
Vessel 4 left work is 3
Vessel 5 has QCs 4
Vessel 5 left work is 8
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 0
Vessel 7 left work is 30
Vessel 3 has QCs 1
Vessel 3 left work is 5
Vessel 4 has QCs 3
Vessel 4 left work is 0
Vessel 5 has QCs 4
Vessel 5 left work is 4
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 0
Vessel 7 left work is 30
Vessel 3 has QCs 1
Vessel 3 left work is 4
Vessel 5 has QCs 4
Vessel 5 left work is 0
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 3
Vessel 7 left work is 27
Vessel 3 has QCs 1
Vessel 3 left work is 3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 21
Vessel 3 has QCs 1
Vessel 3 left work is 2
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 15
Vessel 3 has QCs 1
Vessel 3 left work is 1
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 9
Vessel 3 has QCs 1
Vessel 3 left work is 0
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is 3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 7 has QCs 6
Vessel 7 left work is -3
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10
Vessel 6 has QCs 0
Vessel 6 left work is 10