diff options
Diffstat (limited to 'Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/cplex')
-rw-r--r-- | Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.xtend | 21 |
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 | |||
6 | import java.io.BufferedWriter | 6 | import java.io.BufferedWriter |
7 | import java.io.FileReader | 7 | import java.io.FileReader |
8 | import java.io.FileWriter | 8 | import java.io.FileWriter |
9 | import java.util.concurrent.TimeUnit | ||
10 | import java.util.regex.Pattern | ||
9 | import org.eclipse.emf.ecore.EPackage | 11 | import org.eclipse.emf.ecore.EPackage |
10 | import org.eclipse.emf.ecore.resource.Resource | 12 | import org.eclipse.emf.ecore.resource.Resource |
11 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl | 13 | import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl |
12 | import java.util.concurrent.TimeUnit | ||
13 | 14 | ||
14 | class CbcCpsMain { | 15 | class 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 | } |