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:
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.xtend21
1 files changed, 17 insertions, 4 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
index 0203a6b6..1a07e26e 100644
--- 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
@@ -6,14 +6,16 @@ import java.io.BufferedReader
6import java.io.BufferedWriter 6import java.io.BufferedWriter
7import java.io.FileReader 7import java.io.FileReader
8import java.io.FileWriter 8import java.io.FileWriter
9import java.util.concurrent.TimeUnit
10import java.util.regex.Pattern
9import org.eclipse.emf.ecore.EPackage 11import org.eclipse.emf.ecore.EPackage
10import org.eclipse.emf.ecore.resource.Resource 12import org.eclipse.emf.ecore.resource.Resource
11import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl 13import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
12import java.util.concurrent.TimeUnit
13 14
14class CbcCpsMain { 15class CbcCpsMain {
15 static val PROBLEM_FILE = "problem.lp" 16 static val PROBLEM_FILE = "problem.lp"
16 static val SOLUTION_FILE = "solution.txt" 17 static val SOLUTION_FILE = "solution.txt"
18 static val VALUE_REGEX = Pattern.compile("Optimal - objective value\\s*([0-9]+(\\.[0-9]+)?)")
17 19
18 private new() { 20 private new() {
19 new IllegalStateException("This is a static utility class and should not be instantiated directly.") 21 new IllegalStateException("This is a static utility class and should not be instantiated directly.")
@@ -23,7 +25,7 @@ class CbcCpsMain {
23 Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put(Resource.Factory.Registry.DEFAULT_EXTENSION, 25 Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put(Resource.Factory.Registry.DEFAULT_EXTENSION,
24 new XMIResourceFactoryImpl) 26 new XMIResourceFactoryImpl)
25 EPackage.Registry.INSTANCE.put(CpsPackage.eNS_URI, CpsPackage.eINSTANCE) 27 EPackage.Registry.INSTANCE.put(CpsPackage.eNS_URI, CpsPackage.eINSTANCE)
26 val generator = new CpsGenerator(1, 4, 2) 28 val generator = new CpsGenerator(1, 4, 1)
27 val problem = generator.generateCpsProblem 29 val problem = generator.generateCpsProblem
28 val toLp = new CpsToLpTranslator(problem, 10, true) 30 val toLp = new CpsToLpTranslator(problem, 10, true)
29 val lp = toLp.lpProblem 31 val lp = toLp.lpProblem
@@ -44,11 +46,22 @@ class CbcCpsMain {
44 System.exit(-1) 46 System.exit(-1)
45 } 47 }
46 val reader = new BufferedReader(new FileReader(SOLUTION_FILE)) 48 val reader = new BufferedReader(new FileReader(SOLUTION_FILE))
49 var double value = Double.NaN
47 try { 50 try {
48 reader.lines.forEach[println(it)] 51 var String line
52 while ((line = reader.readLine) !== null) {
53 println(line)
54 val matcher = VALUE_REGEX.matcher(line)
55 if (matcher.matches) {
56 value = Double.parseDouble(matcher.group(1))
57 }
58 }
49 } finally { 59 } finally {
50 reader.close 60 reader.close
51 } 61 }
52 println("Additional cost: " + problem.requests.flatMap[requirements.map[count]].reduce[p1, p2|p1 + p2] * 5) 62 val applicationCost = problem.requests.flatMap[requirements.map[count]].reduce[p1, p2|p1 + p2] * 5
63 val cost = applicationCost + value
64 println
65 println("Cost: " + cost)
53 } 66 }
54} 67}