Commit 0eac4c02 authored by Vladislav Kiselev's avatar Vladislav Kiselev

missed file

parent 65d7de9b
.idea/* .idea/*
out/* out/*
temp_data/*
Conversion.iml Conversion.iml
.idea/dictionaries/Vlad_kv.xml .idea/dictionaries/Vlad_kv.xml
test/result.txt test/result.txt
......
#!/bin/bash #!/bin/bash
rm -f raw_result.txt # Путь к проекту.
rm -f result.txt PATH_TO_PROJECT="."
VERSION="1" VERSION="1"
java -classpath "../out/production/Conversion" inport.Main "to_MiniZinc_$VERSION" in.ipp "conversion_$VERSION.dzn" java -classpath "../out/production/Conversion" inport.Main "to_MiniZinc_$VERSION" $1 "$PATH_TO_PROJECT/temp_data/data.dzn"
mzn2fzn --no-optimize -o model.fzn "../constraints/conversion_$VERSION.mzn" "conversion_$VERSION.dzn"
N_LINES=$(wc -l model.fzn)
echo "Model size : $N_LINES"
START=$(date +%s.%N) START=$(date +%s.%N)
minizinc --solver Chuffed "../constraints/conversion_$VERSION.mzn" "conversion_$VERSION.dzn" >> raw_result.txt minizinc --solver Chuffed "../constraints/conversion_$VERSION.mzn" "conversion_$VERSION.dzn" >> raw_result.txt
# Gecode Chuffed
END=$(date +%s.%N) END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc) DIFF=$(echo "$END - $START" | bc)
echo $DIFF echo $DIFF
java -classpath "../out/production/Conversion" inport.Main resolve_result in.ipp raw_result.txt result.txt java -classpath "../out/production/Conversion" inport.Main resolve_result in.ipp raw_result.txt result.txt
/usr/lib/jvm/java-8-openjdk-amd64/bin/java
-javaagent:/home/vlad_kv/.local/share/umake/ide/idea/lib/idea_rt.jar=42623:/home/vlad_kv/.local/share/umake/ide/idea/bin
-Dfile.encoding=UTF-8
-classpath
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/cldrdata.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/dnsns.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/icedtea-sound.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jaccess.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/java-atk-wrapper.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/nashorn.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunec.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/zipfs.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfxswt.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management-agent.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar:/home/vlad_kv/GitHub/Conversion/out/production/Conversion:/usr/share/java/org.sat4j.core.jar:/usr/share/java/org.sat4j.pb.jar inport.Main run experiment/in.ipp
/*
* 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<String> 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; j<nSpaces; j++)
clause += " ";
for (int j=0; j<nTimes; j++)
{
int ind = cVar*nTimes+j;
if (res[ind]>0)
clause += "X";
else
clause += "-";
}
writer.write(clause+"\n");
cVar++;
} while (cVar<nOperations);
writer.flush();
writer.close();
}
private static void satSolverDemo()
{
ISolver solver = SolverFactory.newDefault();
solver.setTimeout(300);
Reader reader = new DimacsReader(solver);
PrintWriter out = new PrintWriter(System.out,true);
try {
IProblem problem = reader.parseInstance("D:\\KSRC\\Planing\\example.cnf");
if (problem.isSatisfiable()) {
System.out.println("Satisfiable !");
reader.decode(problem.model(),out);
int[] res = problem.model();
int a = 6;
} else {
System.out.println("Unsatisfiable !");
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
} catch (ParseFormatException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
} catch (ContradictionException e) {
System.out.println("Unsatisfiable (trivial)!");
} catch (org.sat4j.specs.TimeoutException ex) {
System.out.println("Timeout, sorry!");
}
}
private static int[] pbSolverDemo(String fileName) throws FileNotFoundException, ParseFormatException, ContradictionException, org.sat4j.specs.TimeoutException {
IPBSolver solver = org.sat4j.pb.SolverFactory.newEclipseP2();
solver.setTimeoutOnConflicts(100000000);
OPBEclipseReader2007 reader = new OPBEclipseReader2007(solver);
// CNF filename is given on the command line
FileReader fr = new FileReader(fileName);
Date start = new Date();
IProblem problem = reader.parseInstance(fr);
boolean rslt = problem.isSatisfiable();
Date finish = new Date();
long mtime = (finish.getTime() - start.getTime());
System.out.println("Solution time (msec) - " + mtime);
if (rslt)
{
System.out.println("Satisfiable !");
int[] res = problem.model();
return res;
}
else
{
System.out.println("Unsatisfiable !");
int[] res = new int[1];
res[0] = 0;
return res;
}
}
public static void pbStringSolverDemo() throws ContradictionException {
IPBSolver solver = new OPBStringSolver();
solver.newVar(3);
IVecInt clause = new VecInt();
clause.push(1).push(2).push(3);
solver.addClause(clause);
IVecInt vars = new VecInt();
vars.push(2).push(3);
IVec coeffs = new Vec();
coeffs.push(BigInteger.TEN).push(BigInteger.valueOf(32));
ObjectiveFunction obj = new ObjectiveFunction(vars, coeffs);
solver.setObjectiveFunction(obj);
String sv = solver.toString();
int a = 6;
}
// Кейс тупой 1
public static void fillByHandE1(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);
// Хранилища
Storage storage1 = new Storage(3, "Storage 1", 10000.0, cargo0);
task.getStorages().add(storage1);
// Суда
TransportShip ship1 = new TransportShip(4, "Ship 1", 200);
task.getShips().add(ship1);
// Шаблоны операций
// Перемещения
MovingTemplate move101 = new MovingTemplate(ship1,berth0,berth1,1.0,5+task.getTemplates().size());
task.getTemplates().add(move101);
MovingTemplate move110 = new MovingTemplate(ship1,berth1,berth0,1.0,5+task.getTemplates().size());
task.getTemplates().add(move110);
// Погрузки
LoadingTemplate load11 = new LoadingTemplate(ship1,berth1,storage1,100.0,5+task.getTemplates().size());
task.getTemplates().add(load11);
// Начальное состояние
MovingObjectState sini1 = new MovingObjectState(ship1, berth0);
task.getVesselInitialState().add(sini1);
StorageState stini1 = new StorageState(ship1,cargo0, 0.0);
task.getStorageInitialState().add(stini1);
StorageState tini1 = new StorageState(storage1, cargo0, 10000.0);
task.getStorageInitialState().add(tini1);
// Конечное состояние
MovingObjectState send1 = new MovingObjectState(ship1, berth0);
task.getVesselInitialState().add(send1);
StorageState stend1 = new StorageState(ship1,cargo0, 1000.0);
task.getStorageInitialState().add(stend1);
// Горизонт планирования
task.setPlanningInterval(18.0);
}
// Кейс тупой-претупой 0
public static void fillByHandE0(TaskCase task)
{
// Статические элементы
// Грузы
Cargo cargo0 = new Cargo(1.0, 1, "LNG");
task.getCargoes().add(cargo0);
// Причалы
Berth berth0 = new Berth(2, "Raid", true);
task.getBerths().add(berth0);
Berth berth1 = new Berth(3, "Pier 1", false);
task.getBerths().add(berth1);
// Хранилища
Storage storage1 = new Storage(4, "Storage 1", 10000.0, cargo0);
task.getStorages().add(storage1);
// Суда
TransportShip ship1 = new TransportShip(5, "Ship 1", 200);
task.getShips().add(ship1);
// Шаблоны операций
// Перемещения
MovingTemplate move101 = new MovingTemplate(ship1,berth0,berth1,1.0,6+task.getTemplates().size());
task.getTemplates().add(move101);
MovingTemplate move110 = new MovingTemplate(ship1,berth1,berth0,1.0,6+task.getTemplates().size());
task.getTemplates().add(move110);
// Погрузки
LoadingTemplate load11 = new LoadingTemplate(ship1,berth1,storage1,100.0,6+task.getTemplates().size());
task.getTemplates().add(load11);
// Начальное состояние
MovingObjectState sini1 = new MovingObjectState(ship1, berth0);
task.getVesselInitialState().add(sini1);
StorageState stini1 = new StorageState(ship1,cargo0, 0.0);
task.getStorageInitialState().add(stini1);
StorageState tini1 = new StorageState(storage1, cargo0, 1000.0);
task.getStorageInitialState().add(tini1);
// Конечное состояние
MovingObjectState send1 = new MovingObjectState(ship1, berth0);
task.getVesselEndState().add(send1);
StorageState stend1 = new StorageState(ship1, cargo0, 100.0);
task.getStorageEndState().add(stend1);
// Горизонт планирования
task.setPlanningInterval(4.0);
}
/*
// Кейс два судна-причал
public static void fillByHandE2V1B(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);
// Хранилища
Storage storage1 = new Storage(1, "Storage 1", 10000.0, cargo0);
task.getStorages().add(storage1);
// Суда
TransportShip ship1 = new TransportShip(1, "Ship 1", 300);
task.getShips().add(ship1);
TransportShip ship2 = new TransportShip(2, "Ship 2", 300);
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 move201 = new MovingTemplate(ship2,berth0,berth1,1.0,task.getTemplates().size());
task.getTemplates().add(move201);
// 4
MovingTemplate move210 = new MovingTemplate(ship2,berth1,berth0,1.0,task.getTemplates().size());
task.getTemplates().add(move210);
// Швартовки
// 5
MooringTemplate mr11 = new MooringTemplate(ship1, berth1, 1.0, true, task.getTemplates().size());
task.getTemplates().add(mr11);
// 6
MooringTemplate mr110 = new MooringTemplate(ship1, berth1, 1.0, false, task.getTemplates().size());
task.getTemplates().add(mr110);
// 7
MooringTemplate mr21 = new MooringTemplate(ship2, berth1, 1.0, true, task.getTemplates().size());
task.getTemplates().add(mr21);
// 8
MooringTemplate mr210 = new MooringTemplate(ship2, berth1, 1.0, false, task.getTemplates().size());
task.getTemplates().add(mr210);
// Погрузки
// 9
LoadingTemplate load11 = new LoadingTemplate(ship1,berth1,storage1,100.0,task.getTemplates().size());
task.getTemplates().add(load11);
// 10
LoadingTemplate load21 = new LoadingTemplate(ship2,berth1,storage1,100.0,task.getTemplates().size());
task.getTemplates().add(load21);
// Начальное состояние
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, 1000.0);
task.getStorageInitialState().add(tini1);
// Конечное состояние
TransportShipState send1 = new TransportShipState(0.0, ship1, berth0, false); send1.getCargoState().put(cargo0, 200.0);
task.getVesselEndState().add(send1);
TransportShipState send2 = new TransportShipState(0.0, ship2, berth0, false); send2.getCargoState().put(cargo0, 200.0);
task.getVesselEndState().add(send2);
// Горизонт планирования
task.setPlanningInterval(12.0);
}
*/
// Кейс имени Топажа с нетривиальным решением (1->7->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);
}
*/
/// <summary>
/// Тест мобилизации средств грузообработки
/// </summary>
/// <returns></returns>
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);
}
/*
/// <summary>
/// Тест мобилизации средств грузообработки
/// </summary>
/// <returns></returns>
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);
}
*/
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment