/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package inport; //import com.google.gson.Gson; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.math.BigInteger; import java.util.Date; import org.sat4j.core.Vec; import org.sat4j.core.VecInt; import org.sat4j.minisat.SolverFactory; import org.sat4j.pb.IPBSolver; import org.sat4j.pb.OPBStringSolver; import org.sat4j.pb.ObjectiveFunction; import org.sat4j.pb.reader.OPBEclipseReader2007; import org.sat4j.reader.DimacsReader; import org.sat4j.reader.ParseFormatException; import org.sat4j.reader.Reader; import org.sat4j.specs.ContradictionException; import org.sat4j.specs.IProblem; import org.sat4j.specs.ISolver; import org.sat4j.specs.IVec; import org.sat4j.specs.IVecInt; // import pbsugar.pb.PBParser; //import java.beans.XMLEncoder; //import java.io.BufferedOutputStream; //import java.io.FileNotFoundException; //import java.io.FileOutputStream; //import java.io.FileWriter; //import java.io.IOException; /** * * @author topazh_ag */ public class InPort { /** * @param args the command line arguments */ public static void main(String[] args) throws Exception { globalTest(); /* // Создаем новую задачу TaskCase task = new TaskCase(); // Читаем ее из файла первого аргумента task.deserialize(args[0]); // Подготвливаем для солвера и решаем String fName = "task.opb"; int nOperations = task.pb_formalize(fName); int[] res = pbSolverDemo(fName); // Запись во все назначения int nTimes = (int) (task.getPlanningInterval() + 1.0 - 1e-7); if (res.length>1) { formResult(fName, res, nOperations, nTimes); task.formSolutionFromPB(res); task.serialize(args[0]); } */ } private static void globalTest() throws Exception { // Создаем новую задачу TaskCase task = new TaskCase(); // Заполняем вручную // fillByHandT(task); // fillByHandT(task); // fillByHand2(task); // fillByHandE0(task); // Пишем // task.serialize("Task.txt"); // Читаем обратно task.deserialize("ippStart.ipp"); // И пишем в другой файл для сравнения task.serialize("TaskCopy.txt"); // Подготвливаем для солвера String fName = "task.opb"; // int nOperations = task.pb_formalize(fName); int nOperations = 17; /* pbsugar.PBSugar solver = new pbsugar.PBSugar(); solver.pbFileName = fName; int variables = solver.encode(); Set pbSolution = solver.solve(variables); */ int[] res = pbSolverDemo(fName); // Запись в int nTimes = (int) (task.getPlanningInterval() + 1.0 - 1e-7); if (res.length>1) { formResult(fName, res, nOperations, nTimes); task.formSolutionFromPB(res); task.serialize("TaskResult.txt"); } } private static void formResult(String fileName, int[] res, int nOperations, int nTimes) throws IOException { // Решение - в конец файла задания FileWriter writer = new FileWriter(fileName, true); // Решение - в отдельный файл // FileWriter writer = new FileWriter("D:\\KSRC\\GMT_Logistics\\Planning\\results.txt", false); writer.write("\n"); writer.write("* Results: \n"); writer.write("\n"); int cVar = 0; do { String clause = "Operation "+(cVar+1) + ": "; int nSpaces = 6 - (int)(Math.log10(cVar+1)); for (int j=0; j0) clause += "X"; else clause += "-"; } writer.write(clause+"\n"); cVar++; } while (cVar7->1->6->1) public static void fillByHandT(TaskCase task) { // Статические элементы // Грузы Cargo cargo0 = new Cargo(1.0, 0, "LNG"); task.getCargoes().add(cargo0); // Причалы Berth berth0 = new Berth(1, "Raid", true); task.getBerths().add(berth0); Berth berth1 = new Berth(2, "Pier 1", false); task.getBerths().add(berth1); Berth berth2 = new Berth(3, "Pier 2", false); task.getBerths().add(berth2); // Хранилища Storage storage1 = new Storage(4, "Storage 1", 10000.0, cargo0); task.getStorages().add(storage1); // Суда TransportShip ship1 = new TransportShip(5, "Ship 1", 2000); task.getShips().add(ship1); TransportShip ship2 = new TransportShip(6, "Ship 2", 2000); task.getShips().add(ship2); // Шаблоны операций // Перемещения //1 MovingTemplate move101 = new MovingTemplate(ship1,berth0,berth1,1.0,7+task.getTemplates().size()); task.getTemplates().add(move101); //2 MovingTemplate move110 = new MovingTemplate(ship1,berth1,berth0,1.0,7+task.getTemplates().size()); task.getTemplates().add(move110); //3 MovingTemplate move102 = new MovingTemplate(ship1,berth0,berth2,1.0,7+task.getTemplates().size()); task.getTemplates().add(move102); //4 MovingTemplate move120 = new MovingTemplate(ship1,berth2,berth0,1.0,7+task.getTemplates().size()); task.getTemplates().add(move120); //5 MovingTemplate move112 = new MovingTemplate(ship1,berth1,berth2,1.0,7+task.getTemplates().size()); task.getTemplates().add(move112); //6 MovingTemplate move121 = new MovingTemplate(ship1,berth2,berth1,1.0,7+task.getTemplates().size()); task.getTemplates().add(move121); //7 MovingTemplate move201 = new MovingTemplate(ship2,berth0,berth1,1.0,7+task.getTemplates().size()); task.getTemplates().add(move201); //8 MovingTemplate move210 = new MovingTemplate(ship2,berth1,berth0,1.0,7+task.getTemplates().size()); task.getTemplates().add(move210); //9 MovingTemplate move202 = new MovingTemplate(ship2,berth0,berth2,1.0,7+task.getTemplates().size()); task.getTemplates().add(move202); //10 MovingTemplate move220 = new MovingTemplate(ship2,berth2,berth0,1.0,7+task.getTemplates().size()); task.getTemplates().add(move220); //11 MovingTemplate move212 = new MovingTemplate(ship2,berth1,berth2,1.0,7+task.getTemplates().size()); task.getTemplates().add(move212); //12 MovingTemplate move221 = new MovingTemplate(ship2,berth2,berth1,1.0,7+task.getTemplates().size()); task.getTemplates().add(move221); // Погрузки //13 LoadingTemplate load11 = new LoadingTemplate(ship1,berth1,storage1,100.0,7+task.getTemplates().size()); task.getTemplates().add(load11); //14 LoadingTemplate load12 = new LoadingTemplate(ship1,berth2,storage1,50.0,7+task.getTemplates().size()); task.getTemplates().add(load12); //15 LoadingTemplate load21 = new LoadingTemplate(ship2,berth1,storage1,100.0,7+task.getTemplates().size()); task.getTemplates().add(load21); //16 LoadingTemplate load22 = new LoadingTemplate(ship2,berth2,storage1,50.0,7+task.getTemplates().size()); task.getTemplates().add(load22); // Начальное состояние MovingObjectState sini1 = new MovingObjectState(ship1, berth0); task.getVesselInitialState().add(sini1); StorageState stini1 = new StorageState(ship1,cargo0, 0.0); task.getStorageInitialState().add(stini1); MovingObjectState sini2 = new MovingObjectState(ship2, berth0); task.getVesselInitialState().add(sini2); StorageState stini2 = new StorageState(ship2,cargo0, 0.0); task.getStorageInitialState().add(stini2); StorageState tini1 = new StorageState(storage1, cargo0, 10000.0); task.getStorageInitialState().add(tini1); // Конечное состояние MovingObjectState send1 = new MovingObjectState(ship1, berth0); task.getVesselEndState().add(send1); StorageState stend1 = new StorageState(ship1,cargo0, 1000.0); task.getStorageEndState().add(stend1); MovingObjectState send2 = new MovingObjectState(ship2, berth0); task.getVesselEndState().add(send2); StorageState stend2 = new StorageState(ship2, cargo0, 1000.0); task.getStorageEndState().add(stend2); // Горизонт планирования task.setPlanningInterval(24.0); } /* // Кейс имени Топажа с нетривиальным решением (1->7->1->6->1) и окном непогоды public static void fillByHandTTW(TaskCase task) { // Статические элементы // Грузы Cargo cargo0 = new Cargo(1.0, 0, "LNG"); task.getCargoes().add(cargo0); // Причалы Berth berth0 = new Berth(0, "Raid", true); task.getBerths().add(berth0); Berth berth1 = new Berth(1, "Pier 1", false); task.getBerths().add(berth1); Berth berth2 = new Berth(2, "Pier 2", false); task.getBerths().add(berth2); // Хранилища Storage storage1 = new Storage(1, "Storage 1", 10000.0, cargo0); task.getStorages().add(storage1); // Суда TransportShip ship1 = new TransportShip(2, "Ship 1", 2000); task.getShips().add(ship1); TransportShip ship2 = new TransportShip(3, "Ship 2", 2000); task.getShips().add(ship2); // Шаблоны операций // Перемещения //1 MovingTemplate move101 = new MovingTemplate(ship1,berth0,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(move101); //2 MovingTemplate move110 = new MovingTemplate(ship1,berth1,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(move110); //3 MovingTemplate move102 = new MovingTemplate(ship1,berth0,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(move102); //4 MovingTemplate move120 = new MovingTemplate(ship1,berth2,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(move120); //5 MovingTemplate move112 = new MovingTemplate(ship1,berth1,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(move112); //6 MovingTemplate move121 = new MovingTemplate(ship1,berth2,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(move121); //7 MovingTemplate move201 = new MovingTemplate(ship2,berth0,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(move201); //8 MovingTemplate move210 = new MovingTemplate(ship2,berth1,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(move210); //9 MovingTemplate move202 = new MovingTemplate(ship2,berth0,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(move202); //10 MovingTemplate move220 = new MovingTemplate(ship2,berth2,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(move220); //11 MovingTemplate move212 = new MovingTemplate(ship2,berth1,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(move212); //12 MovingTemplate move221 = new MovingTemplate(ship2,berth2,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(move221); // Погрузки //13 LoadingTemplate load11 = new LoadingTemplate(ship1,berth1,storage1,100.0,task.getTemplates().size()); task.getTemplates().add(load11); //14 LoadingTemplate load12 = new LoadingTemplate(ship1,berth2,storage1,50.0,task.getTemplates().size()); task.getTemplates().add(load12); //15 LoadingTemplate load21 = new LoadingTemplate(ship2,berth1,storage1,100.0,task.getTemplates().size()); task.getTemplates().add(load21); //16 LoadingTemplate load22 = new LoadingTemplate(ship2,berth2,storage1,50.0,task.getTemplates().size()); task.getTemplates().add(load22); TimeWindow tw = new TimeWindow(load11); tw.getBanWindows().put(2.0,2.0); task.getTimeWindowConstraints().add(tw); tw = new TimeWindow(load21); tw.getBanWindows().put(2.0,2.0); task.getTimeWindowConstraints().add(tw); tw = new TimeWindow(load12); tw.getBanWindows().put(3.0,2.0); task.getTimeWindowConstraints().add(tw); tw = new TimeWindow(load22); tw.getBanWindows().put(3.0,2.0); task.getTimeWindowConstraints().add(tw); // Начальное состояние TransportShipState sini1 = new TransportShipState(0.0, ship1, berth0, false); sini1.getCargoState().put(cargo0, 0.0); task.getVesselInitialState().add(sini1); TransportShipState sini2 = new TransportShipState(0.0, ship2, berth0, false); sini2.getCargoState().put(cargo0, 0.0); task.getVesselInitialState().add(sini2); StorageState tini1 = new StorageState(storage1, 10000.0); task.getStorageInitialState().add(tini1); // Конечное состояние TransportShipState send1 = new TransportShipState(0.0, ship1, berth0, false); send1.getCargoState().put(cargo0, 1000.0); task.getVesselEndState().add(send1); TransportShipState send2 = new TransportShipState(0.0, ship2, berth0, false); send2.getCargoState().put(cargo0, 1000.0); task.getVesselEndState().add(send2); // Горизонт планирования task.setPlanningInterval(24.0); } */ /* // Первый реальный кейс с не полностью тривиальным решением (ездят с буксиром, швартуются сами) public static void fillByHand1(TaskCase task) { // Статические элементы // Грузы Cargo cargo0 = new Cargo(1.0, 0, "LNG"); task.getCargoes().add(cargo0); Cargo cargo1 = new Cargo(1.0, 1, "Excrement"); task.getCargoes().add(cargo1); // Причалы Berth berth0 = new Berth(0, "Raid", true); task.getBerths().add(berth0); Berth berth1 = new Berth(1, "Pier 1", false); task.getBerths().add(berth1); Berth berth2 = new Berth(2, "Pier 2", false); task.getBerths().add(berth2); // Хранилища Storage storage1 = new Storage(1, "Storage 1", 1000.0, cargo1); task.getStorages().add(storage1); Storage storage2 = new Storage(2, "Storage 2", 1000.0, cargo1); task.getStorages().add(storage2); // Буксиры Tow tow1 = new Tow(1, "Tow 1"); task.getTows().add(tow1); // Бункеровщики // Суда TransportShip ship1 = new TransportShip(2, "Ship 1", 2000); task.getShips().add(ship1); TransportShip ship2 = new TransportShip(3, "Ship 2", 2000); task.getShips().add(ship2); // Шаблоны операций // Перемещения // 1 MovingTemplate move101 = new MovingTemplate(ship1,berth0,berth1,8.0,task.getTemplates().size()); task.getTemplates().add(move101); // 2 MovingTemplate move110 = new MovingTemplate(ship1,berth1,berth0,8.0,task.getTemplates().size()); task.getTemplates().add(move110); // 3 MovingTemplate move101b = new MovingTemplate(ship1,berth0,berth1,1.0,task.getTemplates().size()); move101b.getResources().add(tow1); task.getTemplates().add(move101b); // 4 MovingTemplate move110b = new MovingTemplate(ship1,berth1,berth0,1.0,task.getTemplates().size()); move110b.getResources().add(tow1); task.getTemplates().add(move110b); // 5 MovingTemplate move102 = new MovingTemplate(ship1,berth0,berth2,8.0,task.getTemplates().size()); task.getTemplates().add(move102); // 6 MovingTemplate move120 = new MovingTemplate(ship1,berth2,berth0,8.0,task.getTemplates().size()); task.getTemplates().add(move120); // 7 MovingTemplate move102b = new MovingTemplate(ship1,berth0,berth2,1.0,task.getTemplates().size()); move102b.getResources().add(tow1); task.getTemplates().add(move102b); // 8 MovingTemplate move120b = new MovingTemplate(ship1,berth2,berth0,1.0,task.getTemplates().size()); move120b.getResources().add(tow1); task.getTemplates().add(move120b); // 9 MovingTemplate move112b = new MovingTemplate(ship1,berth1,berth2,1.0,task.getTemplates().size()); move112b.getResources().add(tow1); task.getTemplates().add(move112b); // 10 MovingTemplate move121b = new MovingTemplate(ship1,berth2,berth1,1.0,task.getTemplates().size()); move121b.getResources().add(tow1); task.getTemplates().add(move121b); // 11 MovingTemplate move201 = new MovingTemplate(ship2,berth0,berth1,8.0,task.getTemplates().size()); task.getTemplates().add(move201); // 12 MovingTemplate move210 = new MovingTemplate(ship2,berth1,berth0,8.0,task.getTemplates().size()); task.getTemplates().add(move210); // 13 MovingTemplate move201b = new MovingTemplate(ship2,berth0,berth1,1.0,task.getTemplates().size()); move201b.getResources().add(tow1); task.getTemplates().add(move201b); // 14 MovingTemplate move210b = new MovingTemplate(ship2,berth1,berth0,1.0,task.getTemplates().size()); move210b.getResources().add(tow1); task.getTemplates().add(move210b); // 15 MovingTemplate move202 = new MovingTemplate(ship2,berth0,berth2,8.0,task.getTemplates().size()); task.getTemplates().add(move202); // 16 MovingTemplate move220 = new MovingTemplate(ship2,berth2,berth0,8.0,task.getTemplates().size()); task.getTemplates().add(move220); // 17 MovingTemplate move202b = new MovingTemplate(ship2,berth0,berth2,1.0,task.getTemplates().size()); move202b.getResources().add(tow1); task.getTemplates().add(move202b); // 18 MovingTemplate move220b = new MovingTemplate(ship2,berth2,berth0,1.0,task.getTemplates().size()); move220b.getResources().add(tow1); task.getTemplates().add(move220b); // 19 MovingTemplate move212b = new MovingTemplate(ship2,berth1,berth2,1.0,task.getTemplates().size()); move212b.getResources().add(tow1); task.getTemplates().add(move212b); // 20 MovingTemplate move221b = new MovingTemplate(ship2,berth2,berth1,1.0,task.getTemplates().size()); move221b.getResources().add(tow1); task.getTemplates().add(move221b); // 21 MovingTemplate moveb01 = new MovingTemplate(tow1,berth0,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(moveb01); // 22 MovingTemplate moveb10 = new MovingTemplate(tow1,berth1,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(moveb10); // 23 MovingTemplate moveb02 = new MovingTemplate(tow1,berth0,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(moveb02); // 24 MovingTemplate moveb20 = new MovingTemplate(tow1,berth2,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(moveb20); // 25 MovingTemplate moveb12b = new MovingTemplate(tow1,berth1,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(moveb12b); // 26 MovingTemplate moveb21b = new MovingTemplate(tow1,berth2,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(moveb21b); // Швартовки // 27 MooringTemplate moore11p = new MooringTemplate(ship1,berth1,1.0,true,task.getTemplates().size()); task.getTemplates().add(moore11p); // 28 MooringTemplate moore11m = new MooringTemplate(ship1,berth1,1.0,false,task.getTemplates().size()); task.getTemplates().add(moore11m); // 29 MooringTemplate moore12p = new MooringTemplate(ship1,berth2,1.0,true,task.getTemplates().size()); task.getTemplates().add(moore12p); // 30 MooringTemplate moore12m = new MooringTemplate(ship1,berth2,1.0,false,task.getTemplates().size()); task.getTemplates().add(moore12m); // 31 MooringTemplate moore21p = new MooringTemplate(ship2,berth1,1.0,true,task.getTemplates().size()); task.getTemplates().add(moore21p); // 32 MooringTemplate moore21m = new MooringTemplate(ship2,berth1,1.0,false,task.getTemplates().size()); task.getTemplates().add(moore21m); // 33 MooringTemplate moore22p = new MooringTemplate(ship2,berth2,1.0,true,task.getTemplates().size()); task.getTemplates().add(moore22p); // 34 MooringTemplate moore22m = new MooringTemplate(ship2,berth2,1.0,false,task.getTemplates().size()); task.getTemplates().add(moore22m); // Погрузки // 35 LoadingTemplate load11p = new LoadingTemplate(ship1,berth1,storage1,200.0,task.getTemplates().size()); task.getTemplates().add(load11p); // 36 LoadingTemplate load11m = new LoadingTemplate(ship1,berth1,storage1,-200.0,task.getTemplates().size()); task.getTemplates().add(load11m); // 37 LoadingTemplate load12p = new LoadingTemplate(ship1,berth2,storage2,200.0,task.getTemplates().size()); task.getTemplates().add(load12p); // 38 LoadingTemplate load12m = new LoadingTemplate(ship1,berth2,storage2,-200.0,task.getTemplates().size()); task.getTemplates().add(load12m); // 39 LoadingTemplate load21p = new LoadingTemplate(ship2,berth1,storage1,200.0,task.getTemplates().size()); task.getTemplates().add(load21p); // 40 LoadingTemplate load21m = new LoadingTemplate(ship2,berth1,storage1,-200.0,task.getTemplates().size()); task.getTemplates().add(load21m); // 41 LoadingTemplate load22p = new LoadingTemplate(ship2,berth2,storage2,200.0,task.getTemplates().size()); task.getTemplates().add(load22p); // 42 LoadingTemplate load22m = new LoadingTemplate(ship2,berth2,storage2,-200.0,task.getTemplates().size()); task.getTemplates().add(load22m); // Начальное состояние TransportShipState sini1 = new TransportShipState(0.0, ship1, berth0, false); sini1.getCargoState().put(cargo1, 1000.0); task.getVesselInitialState().add(sini1); TransportShipState sini2 = new TransportShipState(0.0, ship2, berth0, false); sini2.getCargoState().put(cargo1, 0.0); task.getVesselInitialState().add(sini2); MovingObjectState sini3 = new MovingObjectState(tow1,berth0); task.getVesselInitialState().add(sini3); StorageState tini1 = new StorageState(storage1, 200.0); task.getStorageInitialState().add(tini1); StorageState tini2 = new StorageState(storage2, 800.0); task.getStorageInitialState().add(tini2); // Конечное состояние TransportShipState send1 = new TransportShipState(0.0, ship1, berth0, false); send1.getCargoState().put(cargo1, 0.0); task.getVesselEndState().add(send1); TransportShipState send2 = new TransportShipState(0.0, ship2, berth0, false); send2.getCargoState().put(cargo1, 1000.0); task.getVesselEndState().add(send2); // Горизонт планирования task.setPlanningInterval(18.0); } */ /* // Второй реальный кейс с не полностью тривиальным решением (ездят с буксиром, швартуются с буксиром) public static void fillByHand1a(TaskCase task) { // Статические элементы // Грузы Cargo cargo0 = new Cargo(1.0, 0, "LNG"); task.getCargoes().add(cargo0); Cargo cargo1 = new Cargo(1.0, 1, "Excrement"); task.getCargoes().add(cargo1); // Причалы Berth berth0 = new Berth(0, "Raid", true); task.getBerths().add(berth0); Berth berth1 = new Berth(1, "Pier 1", false); task.getBerths().add(berth1); Berth berth2 = new Berth(2, "Pier 2", false); task.getBerths().add(berth2); // Хранилища Storage storage1 = new Storage(1, "Storage 1", 1000.0, cargo1); task.getStorages().add(storage1); Storage storage2 = new Storage(2, "Storage 2", 1000.0, cargo1); task.getStorages().add(storage2); // Буксиры Tow tow1 = new Tow(1, "Tow 1"); task.getTows().add(tow1); // Бункеровщики // Суда TransportShip ship1 = new TransportShip(2, "Ship 1", 2000); task.getShips().add(ship1); TransportShip ship2 = new TransportShip(3, "Ship 2", 2000); task.getShips().add(ship2); // Шаблоны операций // Перемещения // 1 MovingTemplate move101 = new MovingTemplate(ship1,berth0,berth1,8.0,task.getTemplates().size()); task.getTemplates().add(move101); // 2 MovingTemplate move110 = new MovingTemplate(ship1,berth1,berth0,8.0,task.getTemplates().size()); task.getTemplates().add(move110); // 3 MovingTemplate move101b = new MovingTemplate(ship1,berth0,berth1,1.0,task.getTemplates().size()); move101b.getResources().add(tow1); task.getTemplates().add(move101b); // 4 MovingTemplate move110b = new MovingTemplate(ship1,berth1,berth0,1.0,task.getTemplates().size()); move110b.getResources().add(tow1); task.getTemplates().add(move110b); // 5 MovingTemplate move102 = new MovingTemplate(ship1,berth0,berth2,8.0,task.getTemplates().size()); task.getTemplates().add(move102); // 6 MovingTemplate move120 = new MovingTemplate(ship1,berth2,berth0,8.0,task.getTemplates().size()); task.getTemplates().add(move120); // 7 MovingTemplate move102b = new MovingTemplate(ship1,berth0,berth2,1.0,task.getTemplates().size()); move102b.getResources().add(tow1); task.getTemplates().add(move102b); // 8 MovingTemplate move120b = new MovingTemplate(ship1,berth2,berth0,1.0,task.getTemplates().size()); move120b.getResources().add(tow1); task.getTemplates().add(move120b); // 9 MovingTemplate move112b = new MovingTemplate(ship1,berth1,berth2,1.0,task.getTemplates().size()); move112b.getResources().add(tow1); task.getTemplates().add(move112b); // 10 MovingTemplate move121b = new MovingTemplate(ship1,berth2,berth1,1.0,task.getTemplates().size()); move121b.getResources().add(tow1); task.getTemplates().add(move121b); // 11 MovingTemplate move201 = new MovingTemplate(ship2,berth0,berth1,8.0,task.getTemplates().size()); task.getTemplates().add(move201); // 12 MovingTemplate move210 = new MovingTemplate(ship2,berth1,berth0,8.0,task.getTemplates().size()); task.getTemplates().add(move210); // 13 MovingTemplate move201b = new MovingTemplate(ship2,berth0,berth1,1.0,task.getTemplates().size()); move201b.getResources().add(tow1); task.getTemplates().add(move201b); // 14 MovingTemplate move210b = new MovingTemplate(ship2,berth1,berth0,1.0,task.getTemplates().size()); move210b.getResources().add(tow1); task.getTemplates().add(move210b); // 15 MovingTemplate move202 = new MovingTemplate(ship2,berth0,berth2,8.0,task.getTemplates().size()); task.getTemplates().add(move202); // 16 MovingTemplate move220 = new MovingTemplate(ship2,berth2,berth0,8.0,task.getTemplates().size()); task.getTemplates().add(move220); // 17 MovingTemplate move202b = new MovingTemplate(ship2,berth0,berth2,1.0,task.getTemplates().size()); move202b.getResources().add(tow1); task.getTemplates().add(move202b); // 18 MovingTemplate move220b = new MovingTemplate(ship2,berth2,berth0,1.0,task.getTemplates().size()); move220b.getResources().add(tow1); task.getTemplates().add(move220b); // 19 MovingTemplate move212b = new MovingTemplate(ship2,berth1,berth2,1.0,task.getTemplates().size()); move212b.getResources().add(tow1); task.getTemplates().add(move212b); // 20 MovingTemplate move221b = new MovingTemplate(ship2,berth2,berth1,1.0,task.getTemplates().size()); move221b.getResources().add(tow1); task.getTemplates().add(move221b); // 21 MovingTemplate moveb01 = new MovingTemplate(tow1,berth0,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(moveb01); // 22 MovingTemplate moveb10 = new MovingTemplate(tow1,berth1,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(moveb10); // 23 MovingTemplate moveb02 = new MovingTemplate(tow1,berth0,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(moveb02); // 24 MovingTemplate moveb20 = new MovingTemplate(tow1,berth2,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(moveb20); // 25 MovingTemplate moveb12b = new MovingTemplate(tow1,berth1,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(moveb12b); // 26 MovingTemplate moveb21b = new MovingTemplate(tow1,berth2,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(moveb21b); // Швартовки // 27 MooringTemplate moore11p = new MooringTemplate(ship1,berth1,1.0,true,task.getTemplates().size()); moore11p.getResources().add(tow1); task.getTemplates().add(moore11p); // 28 MooringTemplate moore11m = new MooringTemplate(ship1,berth1,1.0,false,task.getTemplates().size()); moore11m.getResources().add(tow1); task.getTemplates().add(moore11m); // 29 MooringTemplate moore12p = new MooringTemplate(ship1,berth2,1.0,true,task.getTemplates().size()); moore12p.getResources().add(tow1); task.getTemplates().add(moore12p); // 30 MooringTemplate moore12m = new MooringTemplate(ship1,berth2,1.0,false,task.getTemplates().size()); moore12m.getResources().add(tow1); task.getTemplates().add(moore12m); // 31 MooringTemplate moore21p = new MooringTemplate(ship2,berth1,1.0,true,task.getTemplates().size()); moore21p.getResources().add(tow1); task.getTemplates().add(moore21p); // 32 MooringTemplate moore21m = new MooringTemplate(ship2,berth1,1.0,false,task.getTemplates().size()); moore21m.getResources().add(tow1); task.getTemplates().add(moore21m); // 33 MooringTemplate moore22p = new MooringTemplate(ship2,berth2,1.0,true,task.getTemplates().size()); moore22p.getResources().add(tow1); task.getTemplates().add(moore22p); // 34 MooringTemplate moore22m = new MooringTemplate(ship2,berth2,1.0,false,task.getTemplates().size()); moore22m.getResources().add(tow1); task.getTemplates().add(moore22m); // Погрузки // 35 LoadingTemplate load11p = new LoadingTemplate(ship1,berth1,storage1,200.0,task.getTemplates().size()); task.getTemplates().add(load11p); // 36 LoadingTemplate load11m = new LoadingTemplate(ship1,berth1,storage1,-200.0,task.getTemplates().size()); task.getTemplates().add(load11m); // 37 LoadingTemplate load12p = new LoadingTemplate(ship1,berth2,storage2,200.0,task.getTemplates().size()); task.getTemplates().add(load12p); // 38 LoadingTemplate load12m = new LoadingTemplate(ship1,berth2,storage2,-200.0,task.getTemplates().size()); task.getTemplates().add(load12m); // 39 LoadingTemplate load21p = new LoadingTemplate(ship2,berth1,storage1,200.0,task.getTemplates().size()); task.getTemplates().add(load21p); // 40 LoadingTemplate load21m = new LoadingTemplate(ship2,berth1,storage1,-200.0,task.getTemplates().size()); task.getTemplates().add(load21m); // 41 LoadingTemplate load22p = new LoadingTemplate(ship2,berth2,storage2,200.0,task.getTemplates().size()); task.getTemplates().add(load22p); // 42 LoadingTemplate load22m = new LoadingTemplate(ship2,berth2,storage2,-200.0,task.getTemplates().size()); task.getTemplates().add(load22m); // Начальное состояние TransportShipState sini1 = new TransportShipState(0.0, ship1, berth0, false); sini1.getCargoState().put(cargo1, 1000.0); task.getVesselInitialState().add(sini1); TransportShipState sini2 = new TransportShipState(0.0, ship2, berth0, false); sini2.getCargoState().put(cargo1, 0.0); task.getVesselInitialState().add(sini2); MovingObjectState sini3 = new MovingObjectState(tow1,berth0); task.getVesselInitialState().add(sini3); StorageState tini1 = new StorageState(storage1, 200.0); task.getStorageInitialState().add(tini1); StorageState tini2 = new StorageState(storage2, 800.0); task.getStorageInitialState().add(tini2); // Конечное состояние TransportShipState send1 = new TransportShipState(0.0, ship1, berth0, false); send1.getCargoState().put(cargo1, 0.0); task.getVesselEndState().add(send1); TransportShipState send2 = new TransportShipState(0.0, ship2, berth0, false); send2.getCargoState().put(cargo1, 1000.0); task.getVesselEndState().add(send2); // Горизонт планирования task.setPlanningInterval(20.0); } */ /* // Третий реальный кейс с не полностью тривиальным решением (ездят сами, швартуются с буксиром) public static void fillByHand1b(TaskCase task) { // Статические элементы // Грузы Cargo cargo0 = new Cargo(1.0, 0, "LNG"); task.getCargoes().add(cargo0); Cargo cargo1 = new Cargo(1.0, 1, "Excrement"); task.getCargoes().add(cargo1); // Причалы Berth berth0 = new Berth(0, "Raid", true); task.getBerths().add(berth0); Berth berth1 = new Berth(1, "Pier 1", false); task.getBerths().add(berth1); Berth berth2 = new Berth(2, "Pier 2", false); task.getBerths().add(berth2); // Хранилища Storage storage1 = new Storage(1, "Storage 1", 1000.0, cargo1); task.getStorages().add(storage1); Storage storage2 = new Storage(2, "Storage 2", 1000.0, cargo1); task.getStorages().add(storage2); // Буксиры Tow tow1 = new Tow(1, "Tow 1"); task.getTows().add(tow1); // Бункеровщики // Суда TransportShip ship1 = new TransportShip(2, "Ship 1", 2000); task.getShips().add(ship1); TransportShip ship2 = new TransportShip(3, "Ship 2", 2000); task.getShips().add(ship2); // Шаблоны операций // Перемещения // 1 MovingTemplate move101 = new MovingTemplate(ship1,berth0,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(move101); // 2 MovingTemplate move110 = new MovingTemplate(ship1,berth1,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(move110); // 3 MovingTemplate move101b = new MovingTemplate(ship1,berth0,berth1,8.0,task.getTemplates().size()); move101b.getResources().add(tow1); task.getTemplates().add(move101b); // 4 MovingTemplate move110b = new MovingTemplate(ship1,berth1,berth0,8.0,task.getTemplates().size()); move110b.getResources().add(tow1); task.getTemplates().add(move110b); // 5 MovingTemplate move102 = new MovingTemplate(ship1,berth0,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(move102); // 6 MovingTemplate move120 = new MovingTemplate(ship1,berth2,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(move120); // 7 MovingTemplate move102b = new MovingTemplate(ship1,berth0,berth2,8.0,task.getTemplates().size()); move102b.getResources().add(tow1); task.getTemplates().add(move102b); // 8 MovingTemplate move120b = new MovingTemplate(ship1,berth2,berth0,8.0,task.getTemplates().size()); move120b.getResources().add(tow1); task.getTemplates().add(move120b); // 9 MovingTemplate move112b = new MovingTemplate(ship1,berth1,berth2,8.0,task.getTemplates().size()); move112b.getResources().add(tow1); task.getTemplates().add(move112b); // 10 MovingTemplate move121b = new MovingTemplate(ship1,berth2,berth1,8.0,task.getTemplates().size()); move121b.getResources().add(tow1); task.getTemplates().add(move121b); // 11 MovingTemplate move201 = new MovingTemplate(ship2,berth0,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(move201); // 12 MovingTemplate move210 = new MovingTemplate(ship2,berth1,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(move210); // 13 MovingTemplate move201b = new MovingTemplate(ship2,berth0,berth1,8.0,task.getTemplates().size()); move201b.getResources().add(tow1); task.getTemplates().add(move201b); // 14 MovingTemplate move210b = new MovingTemplate(ship2,berth1,berth0,8.0,task.getTemplates().size()); move210b.getResources().add(tow1); task.getTemplates().add(move210b); // 15 MovingTemplate move202 = new MovingTemplate(ship2,berth0,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(move202); // 16 MovingTemplate move220 = new MovingTemplate(ship2,berth2,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(move220); // 17 MovingTemplate move202b = new MovingTemplate(ship2,berth0,berth2,8.0,task.getTemplates().size()); move202b.getResources().add(tow1); task.getTemplates().add(move202b); // 18 MovingTemplate move220b = new MovingTemplate(ship2,berth2,berth0,8.0,task.getTemplates().size()); move220b.getResources().add(tow1); task.getTemplates().add(move220b); // 19 MovingTemplate move212b = new MovingTemplate(ship2,berth1,berth2,8.0,task.getTemplates().size()); move212b.getResources().add(tow1); task.getTemplates().add(move212b); // 20 MovingTemplate move221b = new MovingTemplate(ship2,berth2,berth1,8.0,task.getTemplates().size()); move221b.getResources().add(tow1); task.getTemplates().add(move221b); // 21 MovingTemplate moveb01 = new MovingTemplate(tow1,berth0,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(moveb01); // 22 MovingTemplate moveb10 = new MovingTemplate(tow1,berth1,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(moveb10); // 23 MovingTemplate moveb02 = new MovingTemplate(tow1,berth0,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(moveb02); // 24 MovingTemplate moveb20 = new MovingTemplate(tow1,berth2,berth0,1.0,task.getTemplates().size()); task.getTemplates().add(moveb20); // 25 MovingTemplate moveb12b = new MovingTemplate(tow1,berth1,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(moveb12b); // 26 MovingTemplate moveb21b = new MovingTemplate(tow1,berth2,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(moveb21b); // Швартовки // 27 MooringTemplate moore11p = new MooringTemplate(ship1,berth1,1.0,true,task.getTemplates().size()); moore11p.getResources().add(tow1); task.getTemplates().add(moore11p); // 28 MooringTemplate moore11m = new MooringTemplate(ship1,berth1,1.0,false,task.getTemplates().size()); moore11m.getResources().add(tow1); task.getTemplates().add(moore11m); // 29 MooringTemplate moore12p = new MooringTemplate(ship1,berth2,1.0,true,task.getTemplates().size()); moore12p.getResources().add(tow1); task.getTemplates().add(moore12p); // 30 MooringTemplate moore12m = new MooringTemplate(ship1,berth2,1.0,false,task.getTemplates().size()); moore12m.getResources().add(tow1); task.getTemplates().add(moore12m); // 31 MooringTemplate moore21p = new MooringTemplate(ship2,berth1,1.0,true,task.getTemplates().size()); moore21p.getResources().add(tow1); task.getTemplates().add(moore21p); // 32 MooringTemplate moore21m = new MooringTemplate(ship2,berth1,1.0,false,task.getTemplates().size()); moore21m.getResources().add(tow1); task.getTemplates().add(moore21m); // 33 MooringTemplate moore22p = new MooringTemplate(ship2,berth2,1.0,true,task.getTemplates().size()); moore22p.getResources().add(tow1); task.getTemplates().add(moore22p); // 34 MooringTemplate moore22m = new MooringTemplate(ship2,berth2,1.0,false,task.getTemplates().size()); moore22m.getResources().add(tow1); task.getTemplates().add(moore22m); // Погрузки // 35 LoadingTemplate load11p = new LoadingTemplate(ship1,berth1,storage1,200.0,task.getTemplates().size()); task.getTemplates().add(load11p); // 36 LoadingTemplate load11m = new LoadingTemplate(ship1,berth1,storage1,-200.0,task.getTemplates().size()); task.getTemplates().add(load11m); // 37 LoadingTemplate load12p = new LoadingTemplate(ship1,berth2,storage2,200.0,task.getTemplates().size()); task.getTemplates().add(load12p); // 38 LoadingTemplate load12m = new LoadingTemplate(ship1,berth2,storage2,-200.0,task.getTemplates().size()); task.getTemplates().add(load12m); // 39 LoadingTemplate load21p = new LoadingTemplate(ship2,berth1,storage1,200.0,task.getTemplates().size()); task.getTemplates().add(load21p); // 40 LoadingTemplate load21m = new LoadingTemplate(ship2,berth1,storage1,-200.0,task.getTemplates().size()); task.getTemplates().add(load21m); // 41 LoadingTemplate load22p = new LoadingTemplate(ship2,berth2,storage2,200.0,task.getTemplates().size()); task.getTemplates().add(load22p); // 42 LoadingTemplate load22m = new LoadingTemplate(ship2,berth2,storage2,-200.0,task.getTemplates().size()); task.getTemplates().add(load22m); // Начальное состояние TransportShipState sini1 = new TransportShipState(0.0, ship1, berth0, false); sini1.getCargoState().put(cargo1, 1000.0); task.getVesselInitialState().add(sini1); TransportShipState sini2 = new TransportShipState(0.0, ship2, berth0, false); sini2.getCargoState().put(cargo1, 0.0); task.getVesselInitialState().add(sini2); MovingObjectState sini3 = new MovingObjectState(tow1,berth0); task.getVesselInitialState().add(sini3); StorageState tini1 = new StorageState(storage1, 200.0); task.getStorageInitialState().add(tini1); StorageState tini2 = new StorageState(storage2, 800.0); task.getStorageInitialState().add(tini2); // Конечное состояние TransportShipState send1 = new TransportShipState(0.0, ship1, berth0, false); send1.getCargoState().put(cargo1, 0.0); task.getVesselEndState().add(send1); TransportShipState send2 = new TransportShipState(0.0, ship2, berth0, false); send2.getCargoState().put(cargo1, 1000.0); task.getVesselEndState().add(send2); // Горизонт планирования task.setPlanningInterval(18.0); } */ /* // Тестовый вариант на заполнение всех полей public static void fillByHand2(TaskCase task) { // Статические элементы // Грузы Cargo cargo0 = new Cargo(1.0, 0, "LNG"); task.getCargoes().add(cargo0); Cargo cargo1 = new Cargo(1.0, 1, "Excrement"); task.getCargoes().add(cargo1); Cargo cargo2 = new Cargo(1.0, 2, "Peaches"); task.getCargoes().add(cargo2); // Причалы Berth berth0 = new Berth(0, "Raid", true); task.getBerths().add(berth0); Berth berth1 = new Berth(1, "Pier 1", false); task.getBerths().add(berth1); Berth berth2 = new Berth(2, "Pier 2", false); task.getBerths().add(berth2); // Хранилища Storage storage1 = new Storage(1, "Storage 1", 1000.0, cargo1); task.getStorages().add(storage1); Storage storage2 = new Storage(2, "Storage 2", 1000.0, cargo2); task.getStorages().add(storage2); Storage storage3 = new Storage(3, "Storage 3", 1000.0, cargo0); task.getStorages().add(storage3); // Оборудование LoadingEquipment eq1 = new LoadingEquipment(1, "PeachPump 1"); task.getEquipments().add(eq1); LoadingEquipment eq2 = new LoadingEquipment(2, "PeachPump 2"); task.getEquipments().add(eq2); // Буксиры Tow tow1 = new Tow(1, "Tow 1"); task.getTows().add(tow1); Tow tow2 = new Tow(2, "Tow 2"); task.getTows().add(tow2); // Бункеровщики Bunker bunker1 = new Bunker(3, "Bunker 1"); task.getBunkers().add(bunker1); // Суда TransportShip ship1 = new TransportShip(4, "Ship 1", 2000); task.getShips().add(ship1); TransportShip ship2 = new TransportShip(5, "Ship 2", 2000); task.getShips().add(ship2); // Шаблоны операций // Перемещения MovingTemplate move101 = new MovingTemplate(ship1,berth0,berth1,5.0,task.getTemplates().size()); task.getTemplates().add(move101); MovingTemplate move201b1 = new MovingTemplate(ship2,berth0,berth2,2.0,task.getTemplates().size()); move201b1.getResources().add(tow1); task.getTemplates().add(move201b1); MovingTemplate move201b12 = new MovingTemplate(ship2,berth2,berth1,2.0,task.getTemplates().size()); move201b12.getResources().add(tow1); move201b12.getResources().add(tow2); task.getTemplates().add(move201b12); MovingTemplate moveb01 = new MovingTemplate(tow1,berth0,berth1,1.0,task.getTemplates().size()); task.getTemplates().add(moveb01); MovingTemplate movebk1 = new MovingTemplate(bunker1,berth0,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(movebk1); // Швартовки MooringTemplate moore11p = new MooringTemplate(ship1,berth1,0.2,true,task.getTemplates().size()); task.getTemplates().add(moore11p); MooringTemplate moore11p1b = new MooringTemplate(ship1,berth1,0.2,true,task.getTemplates().size()); moore11p1b.getResources().add(tow2); task.getTemplates().add(moore11p1b); MooringTemplate moore21p = new MooringTemplate(ship2,berth2,0.5,true,task.getTemplates().size()); task.getTemplates().add(moore21p); MooringTemplate moore21p2b = new MooringTemplate(ship2,berth2,0.5,true,task.getTemplates().size()); moore21p2b.getResources().add(tow1); moore21p2b.getResources().add(tow2); task.getTemplates().add(moore21p2b); // Погрузки LoadingTemplate load11p = new LoadingTemplate(ship1,berth1,storage1,200.0,task.getTemplates().size()); task.getTemplates().add(load11p); LoadingTemplate load11m1r = new LoadingTemplate(ship1,berth1,storage1,-200.0,task.getTemplates().size()); load11m1r.getResources().add(eq1); task.getTemplates().add(load11m1r); LoadingTemplate load12p2r = new LoadingTemplate(ship1,berth2,storage2,10.0,task.getTemplates().size()); load12p2r.getResources().add(eq1); load11m1r.getResources().add(eq2); task.getTemplates().add(load12p2r); // Бункеровки BunkeringTemplate bunk1 = new BunkeringTemplate(ship1,berth0,null,bunker1,300.0,task.getTemplates().size()); task.getTemplates().add(bunk1); BunkeringTemplate bunk21 = new BunkeringTemplate(ship2,berth1,storage3,null,200.0,task.getTemplates().size()); task.getTemplates().add(bunk21); BunkeringTemplate bunk22 = new BunkeringTemplate(ship2,berth1,storage3,null,200.0,task.getTemplates().size()); bunk22.getResources().add(eq1); bunk22.getResources().add(eq2); task.getTemplates().add(bunk22); // Внешние грузопотоки CargoFlow cf1 = new CargoFlow(storage1); cf1.getFlow().put(0.0, -100.0); cf1.getFlow().put(1.0, -150.0); cf1.getFlow().put(2.0, 20.0); cf1.getFlow().put(3.0, 400.0); task.getCargoFlows().add(cf1); CargoFlow cf2 = new CargoFlow(storage2); cf2.getFlow().put(0.0, 100.0); task.getCargoFlows().add(cf2); // Окна непогоды TimeWindow tw1 = new TimeWindow(load11m1r); tw1.getBanWindows().put(5.2, 2.0); tw1.getBanWindows().put(12.6, 3.0); task.getTimeWindowConstraints().add(tw1); TimeWindow tw2 = new TimeWindow(moore21p2b); tw2.getBanWindows().put(3.2, 2.0); tw2.getBanWindows().put(8.3, 0.123); task.getTimeWindowConstraints().add(tw2); // Начальное состояние TransportShipState sini1 = new TransportShipState(0.0, ship1, berth0, false); sini1.getCargoState().put(cargo1, 1000.0); task.getVesselInitialState().add(sini1); TransportShipState sini2 = new TransportShipState(0.0, ship2, berth0, false); sini2.getCargoState().put(cargo1, 0.0); sini2.getCargoState().put(cargo0, 130.0); task.getVesselInitialState().add(sini2); MovingObjectState sini3 = new MovingObjectState(tow1,berth0); task.getVesselInitialState().add(sini3); StorageState tini1 = new StorageState(storage1, 200.0); task.getStorageInitialState().add(tini1); StorageState tini2 = new StorageState(storage2, 800.0); task.getStorageInitialState().add(tini2); StorageState tini3 = new StorageState(storage3, 500.0); task.getStorageInitialState().add(tini3); // Конечное состояние TransportShipState send1 = new TransportShipState(0.0, ship1, berth0, false); send1.getCargoState().put(cargo1, 0.0); send1.getCargoState().put(cargo2, 400.0); task.getVesselEndState().add(send1); TransportShipState send2 = new TransportShipState(0.0, ship2, berth0, false); send2.getCargoState().put(cargo1, 1000.0); send2.getCargoState().put(cargo0, 700.0); task.getVesselEndState().add(send2); // Горизонт планирования task.setPlanningInterval(520.0); } */ /// /// Тест мобилизации средств грузообработки /// /// public static void fillByHandBK(TaskCase task) { //Объекты // Грузы Cargo cargo0 = new Cargo(1.0, 0, "LNG"); task.getCargoes().add(cargo0); // Причалы Berth berth0 = new Berth(1, "Raid", true); task.getBerths().add(berth0); Berth berth1 = new Berth(2, "Pier 1", false); task.getBerths().add(berth1); Berth berth2 = new Berth(3, "Pier 2", false); task.getBerths().add(berth2); // Хранилища Storage storage1 = new Storage(4, "Storage 1", 270.0, cargo0); task.getStorages().add(storage1); // Оборудование LoadingEquipment floatingCrane = new LoadingEquipment(5, "Плавучий кран"); task.getEquipments().add(floatingCrane); // Буксиры Tow tow1 = new Tow(6, "Tow 1"); task.getTows().add(tow1); // Суда TransportShip ship1 = new TransportShip(7, "Ship 1", 2000); task.getShips().add(ship1); // Перемещения // 1 MovingTemplate move101 = new MovingTemplate(ship1,berth0,berth1,2.0,8+task.getTemplates().size()); move101.getResources().add(tow1); task.getTemplates().add(move101); // 2 MovingTemplate move110 = new MovingTemplate(ship1,berth1,berth0,2.0,8+task.getTemplates().size()); move110.getResources().add(tow1); task.getTemplates().add(move110); // 3 MovingTemplate movet20 = new MovingTemplate(tow1,berth2,berth0,2.0,8+task.getTemplates().size()); task.getTemplates().add(movet20); // 4 MovingTemplate movet10 = new MovingTemplate(tow1,berth1,berth0,2.0,8+task.getTemplates().size()); task.getTemplates().add(movet10); // 5 MovingTemplate movet12 = new MovingTemplate(tow1,berth1,berth2,1.0,8+task.getTemplates().size()); task.getTemplates().add(movet12); // 6 MovingTemplate movek21 = new MovingTemplate(floatingCrane,berth2,berth1,2.0,8+task.getTemplates().size()); movek21.getResources().add(tow1); task.getTemplates().add(movek21); // 7 LoadingTemplate lt = new LoadingTemplate(ship1,berth1,storage1,-20.0,8+task.getTemplates().size()); lt.getResources().add(floatingCrane); task.getTemplates().add(lt); StorageState tini1 = new StorageState(storage1, cargo0, 0.0); task.getStorageInitialState().add(tini1); // Начальное состояние MovingObjectState sini1 = new MovingObjectState(ship1, berth0); task.getVesselInitialState().add(sini1); StorageState stini1 = new StorageState(ship1,cargo0, 100.0); task.getStorageInitialState().add(stini1); MovingObjectState sini2 = new MovingObjectState(tow1, berth1); task.getVesselInitialState().add(sini2); MovingObjectState sini3 = new MovingObjectState(floatingCrane, berth2); task.getVesselInitialState().add(sini3); MovingObjectState send1 = new MovingObjectState(ship1, berth0); task.getVesselEndState().add(send1); StorageState stend1 = new StorageState(ship1,cargo0, 0.0); task.getStorageEndState().add(stend1); task.setPlanningInterval(18); } /* /// /// Тест мобилизации средств грузообработки /// /// public static void fillByHandTest(TaskCase task) { //Объекты // Грузы Cargo cargo0 = new Cargo(1.0, 0, "LNG"); task.getCargoes().add(cargo0); // Причалы Berth berth0 = new Berth(0, "Raid", true); task.getBerths().add(berth0); Berth berth1 = new Berth(1, "Pier 1", false); task.getBerths().add(berth1); Berth berth2 = new Berth(2, "Pier 2", false); task.getBerths().add(berth2); // Хранилища Storage storage1 = new Storage(1, "Storage 1", 270.0, cargo0); task.getStorages().add(storage1); // Оборудование LoadingEquipment floatingCrane = new LoadingEquipment(2, "Плавучий кран"); task.getEquipments().add(floatingCrane); // Буксиры Tow tow1 = new Tow(1, "Tow 1"); task.getTows().add(tow1); // Суда TransportShip ship1 = new TransportShip(4, "Ship 1", 2000); task.getShips().add(ship1); // Перемещения // 1 MovingTemplate move101 = new MovingTemplate(ship1,berth0,berth1,2.0,task.getTemplates().size()); move101.getResources().add(tow1); task.getTemplates().add(move101); // 2 MovingTemplate move110 = new MovingTemplate(ship1,berth1,berth0,1.0,task.getTemplates().size()); move110.getResources().add(tow1); task.getTemplates().add(move110); // 3 MovingTemplate movet20 = new MovingTemplate(tow1,berth2,berth0,2.0,task.getTemplates().size()); task.getTemplates().add(movet20); // 4 MovingTemplate movet10 = new MovingTemplate(tow1,berth1,berth0,2.0,task.getTemplates().size()); task.getTemplates().add(movet10); // 5 MovingTemplate movet12 = new MovingTemplate(tow1,berth1,berth2,1.0,task.getTemplates().size()); task.getTemplates().add(movet12); // 6 MovingTemplate movek21 = new MovingTemplate(floatingCrane,berth2,berth1,2.0,task.getTemplates().size()); movek21.getResources().add(tow1); task.getTemplates().add(movek21); // 7 LoadingTemplate lt = new LoadingTemplate(ship1,berth1,storage1,100.0,task.getTemplates().size()); lt.getResources().add(floatingCrane); task.getTemplates().add(lt); StorageState tini1 = new StorageState(storage1, 200.0); task.getStorageInitialState().add(tini1); // Начальное состояние TransportShipState sini1 = new TransportShipState(0.0, ship1, berth0, false); sini1.getCargoState().put(cargo0, 0.0); task.getVesselInitialState().add(sini1); MovingObjectState sini2 = new MovingObjectState(tow1, berth1); task.getVesselInitialState().add(sini2); MovingObjectState sini3 = new MovingObjectState(floatingCrane, berth2); task.getVesselInitialState().add(sini3); TransportShipState send1 = new TransportShipState(0.0, ship1, berth0, false); send1.getCargoState().put(cargo0, 200.0); task.getVesselEndState().add(send1); task.setPlanningInterval(12); } */ }