aboutsummaryrefslogtreecommitdiffstats
path: root/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.xtend
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-05-21 17:00:01 -0400
committerLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-05-21 17:00:01 -0400
commitfd3684b5440dacca0c4bf4be15930555a79e2100 (patch)
tree24120a5c7fdae1532529fa0c4687dc1078cd1cde /Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.xtend
parentInterval hull aggregation operator (diff)
downloadVIATRA-Generator-fd3684b5440dacca0c4bf4be15930555a79e2100.tar.gz
VIATRA-Generator-fd3684b5440dacca0c4bf4be15930555a79e2100.tar.zst
VIATRA-Generator-fd3684b5440dacca0c4bf4be15930555a79e2100.zip
VIATRA DSE and COIN-OR CBC implementations of CPS case study
Diffstat (limited to 'Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.xtend')
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.xtend53
1 files changed, 53 insertions, 0 deletions
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.xtend b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.xtend
new file mode 100644
index 00000000..7ec0f84d
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.xtend
@@ -0,0 +1,53 @@
1package hu.bme.mit.inf.dslreasoner.domains.cps.cplex
2
3import hu.bme.mit.inf.dslreasoner.domains.cps.CpsPackage
4import hu.bme.mit.inf.dslreasoner.domains.cps.generator.CpsGenerator
5import java.io.BufferedReader
6import java.io.BufferedWriter
7import java.io.FileReader
8import java.io.FileWriter
9import org.eclipse.emf.ecore.EPackage
10import org.eclipse.emf.ecore.resource.Resource
11import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
12import java.util.concurrent.TimeUnit
13
14class CbcCpsMain {
15 static val PROBLEM_FILE = "problem.lp"
16 static val SOLUTION_FILE = "solution.txt"
17
18 private new() {
19 new IllegalStateException("This is a static utility class and should not be instantiated directly.")
20 }
21
22 static def void main(String[] args) {
23 Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put(Resource.Factory.Registry.DEFAULT_EXTENSION,
24 new XMIResourceFactoryImpl)
25 EPackage.Registry.INSTANCE.put(CpsPackage.eNS_URI, CpsPackage.eINSTANCE)
26 val generator = new CpsGenerator(1, 4, 1)
27 val problem = generator.generateCpsProblem
28 val toLp = new CpsToLpTranslator(problem, 10, true)
29 val lp = toLp.lpProblem
30 val writer = new BufferedWriter(new FileWriter(PROBLEM_FILE))
31 try {
32 writer.append(lp)
33 } finally {
34 writer.close
35 }
36 val process = new ProcessBuilder().inheritIO.command("cbc", PROBLEM_FILE, "solve", "solu", SOLUTION_FILE).start
37 if (!process.waitFor(120, TimeUnit.SECONDS)) {
38 System.err.println("Timeout reached")
39 process.destroyForcibly
40 System.exit(-1)
41 }
42 if (process.exitValue != 0) {
43 System.err.println("Unexpected exit value " + process.exitValue)
44 System.exit(-1)
45 }
46 val reader = new BufferedReader(new FileReader(SOLUTION_FILE))
47 try {
48 reader.lines.forEach[println(it)]
49 } finally {
50 reader.close
51 }
52 }
53}