From 319c43f3d4d320ad5e4def3d3d98b4dcb5efc961 Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Tue, 19 Jun 2018 10:32:18 +0200
Subject: [PATCH] Tested latest fixes for parsing and property resolving.

---
 .../java/de/tudresden/inf/st/mquat/Main.java  |  24 +-
 .../mquat/serializer/ASTNodeSerializer.java   |  16 +-
 .../src/main/resources/model-handmade.txt     | 500 ++++++++----------
 3 files changed, 248 insertions(+), 292 deletions(-)

diff --git a/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/Main.java b/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/Main.java
index 5014414..049adef 100644
--- a/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/Main.java
+++ b/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/Main.java
@@ -6,8 +6,12 @@ import de.tudresden.inf.st.mquat.generator.*;
 import de.tudresden.inf.st.mquat.jastadd.model.*;
 import de.tudresden.inf.st.mquat.jastadd.parser.MquatParser;
 import de.tudresden.inf.st.mquat.jastadd.scanner.MquatScanner;
+import de.tudresden.inf.st.mquat.serializer.ASTNodeSerializer;
+import de.tudresden.inf.st.mquat.serializer.JsonSerializer;
+import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.config.Configurator;
 
 import java.io.*;
 import java.net.URL;
@@ -139,13 +143,21 @@ public class Main {
   public static void main(String[] args) throws Exception {
     Logger logger = LogManager.getLogger(Main.class);
     logger.info("Starting base.Main");
-//    String fileName = args.length > 0 ? args[0] : "model-handmade.txt";
-//    Optional<Root> parsedModel = loadModel(fileName);
+
+    String fileName = args.length > 0 ? args[0] : "model-handmade.txt";
+//    Configurator.setRootLevel(Level.TRACE);
+    Optional<Root> parsedModel = loadModel(fileName);
+    parsedModel.ifPresent(model -> JsonSerializer.write(model, "model-serialized.txt"));
+
+//    Root model = generateNewModel(new MquatWriteSettings("  "), false);
+//    JsonSerializer.write(model, "model-serialized.txt");
+
 //    checkParsedModel(parsedModel.orElseThrow(RuntimeException::new), getAbsoluteFileForLoading(fileName), settings);
-    ExtensibleScenarioGenerator esg = new ExtensibleScenarioGenerator();
-    esg.setDescription(SCENARIO_DESCRIPTION);
-    esg.setSerializer(new LoggingSerializer());
-    esg.generateModel();
+//    ExtensibleScenarioGenerator esg = new ExtensibleScenarioGenerator();
+//    esg.setDescription(SCENARIO_DESCRIPTION);
+//    esg.setSerializer(new LoggingSerializer());
+//    esg.generateModel();
+
   }
 }
 
diff --git a/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/serializer/ASTNodeSerializer.java b/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/serializer/ASTNodeSerializer.java
index fe5d1ec..697a41c 100644
--- a/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/serializer/ASTNodeSerializer.java
+++ b/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/serializer/ASTNodeSerializer.java
@@ -5,6 +5,8 @@ import com.fasterxml.jackson.databind.SerializerProvider;
 import com.fasterxml.jackson.databind.ser.std.StdSerializer;
 import de.tudresden.inf.st.mquat.jastadd.model.ASTNode;
 import de.tudresden.inf.st.mquat.jastadd.model.ASTNodeAnnotation;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
@@ -12,6 +14,8 @@ import java.lang.reflect.Method;
 
 public class ASTNodeSerializer extends StdSerializer<ASTNode> {
 
+  Logger logger = LogManager.getLogger(ASTNodeSerializer.class);
+
   public ASTNodeSerializer() {
     this(null);
   }
@@ -27,12 +31,16 @@ public class ASTNodeSerializer extends StdSerializer<ASTNode> {
 
     jgen.writeStartObject();
     jgen.writeStringField("k", "NT");
-    jgen.writeStringField("t", value.getClass().getSimpleName());
+    String className = value.getClass().getSimpleName();
+    jgen.writeStringField("t", className);
+    logger.trace("class name: {}", className);
     jgen.writeObjectFieldStart("c");
     for (Method m : value.getClass().getMethods()) {
       try {
         if (m.getAnnotation(ASTNodeAnnotation.Child.class) != null) {
-          jgen.writeFieldName(m.getAnnotation(ASTNodeAnnotation.Child.class).name());
+          String name = m.getAnnotation(ASTNodeAnnotation.Child.class).name();
+          logger.trace("child name: {}", name);
+          jgen.writeFieldName(name);
           provider.defaultSerializeValue(m.invoke(value), jgen);
         } else if (m.getAnnotation(ASTNodeAnnotation.Token.class) != null) {
           jgen.writeFieldName(m.getAnnotation(ASTNodeAnnotation.Token.class).name());
@@ -40,7 +48,9 @@ public class ASTNodeSerializer extends StdSerializer<ASTNode> {
           jgen.writeStringField("k", m.getReturnType().isEnum() ? "enum" : "t");
           jgen.writeStringField("t", m.getReturnType().getName());
           jgen.writeFieldName("v");
-          provider.defaultSerializeValue(m.invoke(value), jgen);
+          Object terminalValue = m.invoke(value);
+          logger.trace("terminal: {}", terminalValue);
+          provider.defaultSerializeValue(terminalValue, jgen);
           jgen.writeEndObject();
         } else if (m.getAnnotation(ASTNodeAnnotation.ListChild.class) != null) {
           jgen.writeFieldName(m.getAnnotation(ASTNodeAnnotation.ListChild.class).name());
diff --git a/jastadd-mquat-base/src/main/resources/model-handmade.txt b/jastadd-mquat-base/src/main/resources/model-handmade.txt
index c16884f..113e1b1 100644
--- a/jastadd-mquat-base/src/main/resources/model-handmade.txt
+++ b/jastadd-mquat-base/src/main/resources/model-handmade.txt
@@ -1,297 +1,231 @@
-
 container resource type ComputeNode {
-    resource type CPU {
-        static property frequency [Hz]
-        runtime property load [%]
-    }
-    resource type RAM {
-        using property total
-        using property free
-    }
-    resource type DISK {
-        using property total
-        using property free
-    }
-    resource type NETWORK {
-        static property latency [ms]
-        static property throughput [kB/s]
-    }
-    derived property flops [ops/s]
-    runtime property STATE []
+ resource type CPU {
+  property frequency [Hz]
+  property load [%]
+ }
+ resource type RAM {
+  using property total
+  using property free
+ }
+ resource type DISK {
+  using property total
+  using property free
+ }
+ resource type NETWORK {
+  property latency [ms]
+  property throughput [kB/s]
+ }
+}
+resource resource4:ComputeNode {
+ resource cpu4_0:CPU {
+  frequency = 1284.0
+  load = 0.0
+ }
+ resource ram4:RAM {
+  total = 539.0
+  free = 539.0
+ }
+ resource disk4:DISK {
+  total = 8426.0
+  free = 8426.0
+ }
+ resource network4:NETWORK {
+  latency = 244.0
+  throughput = 8395.0
+ }
+}
+resource resource2:ComputeNode {
+ resource cpu2_0:CPU {
+  frequency = 2039.0
+  load = 0.0
+ }
+ resource ram2:RAM {
+  total = 8942.0
+  free = 8942.0
+ }
+ resource disk2:DISK {
+  total = 11053.0
+  free = 11053.0
+ }
+ resource network2:NETWORK {
+  latency = 663.0
+  throughput = 85379.0
+ }
+}
+resource resource3:ComputeNode {
+ resource cpu3_0:CPU {
+  frequency = 1749.0
+  load = 0.0
+ }
+ resource ram3:RAM {
+  total = 12552.0
+  free = 12552.0
+ }
+ resource disk3:DISK {
+  total = 9171.0
+  free = 9171.0
+ }
+ resource network3:NETWORK {
+  latency = 118.0
+  throughput = 57675.0
+ }
 }
 resource resource0:ComputeNode {
-    resource cpu0_0:CPU {
-        frequency = 2930
-        load = 0
-    }
-    resource cpu0_1:CPU {
-        frequency = 2930
-        load = 0
-    }
-    resource cpu0_2:CPU {
-        frequency = 2930
-        load = 0
-    }
-    resource cpu0_3:CPU {
-        frequency = 2930
-        load = 0
-    }
-    resource ram0:RAM {
-        total = 10596
-        free = 12709
-    }
-    resource disk0:DISK {
-        total = 3421
-        free = 6238
-    }
-    resource network0:NETWORK {
-        latency = 762
-        throughput = 22003
-    }
+ resource cpu0_0:CPU {
+  frequency = 1567.0
+  load = 0.0
+ }
+ resource ram0:RAM {
+  total = 8602.0
+  free = 8602.0
+ }
+ resource disk0:DISK {
+  total = 15771.0
+  free = 15771.0
+ }
+ resource network0:NETWORK {
+  latency = 518.0
+  throughput = 80226.0
+ }
 }
-
+resource resource1:ComputeNode {
+ resource cpu1_0:CPU {
+  frequency = 1716.0
+  load = 0.0
+ }
+ resource ram1:RAM {
+  total = 8263.0
+  free = 8263.0
+ }
+ resource disk1:DISK {
+  total = 8707.0
+  free = 8707.0
+ }
+ resource network1:NETWORK {
+  latency = 73.0
+  throughput = 33656.0
+ }
+}
+property total [MB]
+property free [MB]
 meta size
-
-static property total [MB]
-runtime property free [MB]
-runtime property energy [J]
-runtime property quality [%]
-
+property energy [J]
+property quality [%]
 component component_0 {
-    contract implementation_0i0 {
-        requires component the_component_0i0_0 of type component_0i0_0
-        requires component the_component_0i0_1 of type component_0i0_1
-        requires resource compute_resource_0 of type ComputeNode
-        requires resource cpu_0 of type CPU
-        requires resource cpu_1 of type CPU
-        requires resource cpu_2 of type CPU
-        requires resource cpu_3 of type CPU
-        requires resource ram_1 of type RAM
-        requires resource disk_1 of type DISK
-        requires resource network_1 of type NETWORK
-        requiring the_component_0i0_0.quality >= 95
-        requiring the_component_0i0_1.quality >= 86
-
-        mode configuration_0i0m0 {
-            requiring cpu_0.frequency >= 2159
-            requiring cpu_1.frequency >= 2159
-            requiring cpu_2.frequency >= 2159
-            requiring cpu_3.frequency >= 2159
-            requiring ram_1.total >= 11005
-            requiring disk_1.total >= 13482
-            requiring network_1.throughput >= 76460
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 90
-            providing energy = ((0.59*(size^2))+(0.89*compute_resource_0.flops))
-        }
-        mode configuration_0i0m1 {
-            requiring cpu_0.frequency >= 2929
-            requiring cpu_1.frequency >= 2929
-            requiring cpu_2.frequency >= 2929
-            requiring cpu_3.frequency >= 2929
-            requiring ram_1.total >= 10595
-            requiring disk_1.total >= 3420
-            requiring network_1.throughput >= 22002
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 35
-            providing energy = ((0.11*(size^2))+(0.94*compute_resource_0.flops))
-        }
-    }
-    contract implementation_0i1 {
-        requires component the_component_0i1_0 of type component_0i1_0
-        requires component the_component_0i1_1 of type component_0i1_1
-        requires resource compute_resource_0 of type ComputeNode
-        requires resource cpu_0 of type CPU
-        requires resource cpu_1 of type CPU
-        requires resource cpu_2 of type CPU
-        requires resource cpu_3 of type CPU
-        requires resource ram_1 of type RAM
-        requires resource disk_1 of type DISK
-        requires resource network_1 of type NETWORK
-        requiring the_component_0i1_0.quality >= 72
-        requiring the_component_0i1_1.quality >= 30
-
-        mode configuration_0i1m0 {
-            requiring cpu_0.frequency >= 2289
-            requiring cpu_1.frequency >= 2289
-            requiring cpu_2.frequency >= 2289
-            requiring cpu_3.frequency >= 2289
-            requiring ram_1.total >= 14825
-            requiring disk_1.total >= 6315
-            requiring network_1.throughput >= 52125
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 10
-            providing energy = ((0.17*(size^2))+(0.78*compute_resource_0.flops))
-        }
-        mode configuration_0i1m1 {
-            requiring cpu_0.frequency >= 1888
-            requiring cpu_1.frequency >= 1888
-            requiring cpu_2.frequency >= 1888
-            requiring cpu_3.frequency >= 1888
-            requiring ram_1.total >= 4782
-            requiring disk_1.total >= 5972
-            requiring network_1.throughput >= 45852
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 1
-            providing energy = ((0.25*(size^2))+(0.44*compute_resource_0.flops))
-        }
-    }
+ contract implementation_0i0 {
+  requires component the_component_0c0 of type component_0c0
+  requires component the_component_0c1 of type component_0c1
+  requires resource compute_resource_0 of type ComputeNode with {
+   cpu_0 of type CPU
+   ram_1 of type RAM
+   disk_1 of type DISK
+   network_1 of type NETWORK
+  }
+  requiring the_component_0c0.quality >= 89.0
+  requiring the_component_0c1.quality >= 71.0
+  requiring cpu_0.frequency >= 1858.0
+  requiring ram_1.total >= 2825.0
+  requiring disk_1.total >= 2707.0
+  requiring network_1.throughput >= 5414.0
+  providing quality = 6.0
+  providing energy = ((0.87*(size^2.0))+(0.98*cpu_0.frequency))
+  
+ }
+ contract implementation_0i1 {
+  requires component the_component_0c0 of type component_0c0
+  requires component the_component_0c1 of type component_0c1
+  requires resource compute_resource_0 of type ComputeNode with {
+   cpu_0 of type CPU
+   ram_1 of type RAM
+   disk_1 of type DISK
+   network_1 of type NETWORK
+  }
+  requiring the_component_0c0.quality >= 45.0
+  requiring the_component_0c1.quality >= 67.0
+  requiring cpu_0.frequency >= 1566.0
+  requiring ram_1.total >= 8601.0
+  requiring disk_1.total >= 15770.0
+  requiring network_1.throughput >= 80225.0
+  providing quality = 96.0
+  providing energy = ((0.9*(size^2.0))+(0.13*cpu_0.frequency))
+  
+ }
+ using property quality
+ using property energy
 }
 
-component component_0i0_0 {
-    contract implementation_0i0_0i0 {
-        requires resource compute_resource_0 of type ComputeNode
-        requires resource cpu_0 of type CPU
-        requires resource cpu_1 of type CPU
-        requires resource cpu_2 of type CPU
-        requires resource cpu_3 of type CPU
-        requires resource ram_1 of type RAM
-        requires resource disk_1 of type DISK
-        requires resource network_1 of type NETWORK
-
-        mode configuration_0i0_0i0m0 {
-            requiring cpu_0.frequency >= 2847
-            requiring cpu_1.frequency >= 2847
-            requiring cpu_2.frequency >= 2847
-            requiring cpu_3.frequency >= 2847
-            requiring ram_1.total >= 1009
-            requiring disk_1.total >= 13412
-            requiring network_1.throughput >= 10042
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 2
-            providing energy = ((0.28*(size^2))+(0.96*compute_resource_0.flops))
-        }
-        mode configuration_0i0_0i0m1 {
-            requiring cpu_0.frequency >= 1901
-            requiring cpu_1.frequency >= 1901
-            requiring cpu_2.frequency >= 1901
-            requiring cpu_3.frequency >= 1901
-            requiring ram_1.total >= 15803
-            requiring disk_1.total >= 4106
-            requiring network_1.throughput >= 58977
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 95
-            providing energy = ((0.24*(size^2))+(0.39*compute_resource_0.flops))
-        }
-    }
-}
-
-component component_0i0_1 {
-    contract implementation_0i0_1i0 {
-        requires resource compute_resource_0 of type ComputeNode
-        requires resource cpu_0 of type CPU
-        requires resource cpu_1 of type CPU
-        requires resource cpu_2 of type CPU
-        requires resource cpu_3 of type CPU
-        requires resource ram_1 of type RAM
-        requires resource disk_1 of type DISK
-        requires resource network_1 of type NETWORK
-
-        mode configuration_0i0_1i0m0 {
-            requiring cpu_0.frequency >= 1968
-            requiring cpu_1.frequency >= 1968
-            requiring cpu_2.frequency >= 1968
-            requiring cpu_3.frequency >= 1968
-            requiring ram_1.total >= 2057
-            requiring disk_1.total >= 9579
-            requiring network_1.throughput >= 64854
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 60
-            providing energy = ((0.45*(size^2))+(0.34*compute_resource_0.flops))
-        }
-        mode configuration_0i0_1i0m1 {
-            requiring cpu_0.frequency >= 2573
-            requiring cpu_1.frequency >= 2573
-            requiring cpu_2.frequency >= 2573
-            requiring cpu_3.frequency >= 2573
-            requiring ram_1.total >= 7208
-            requiring disk_1.total >= 8109
-            requiring network_1.throughput >= 10366
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 52
-            providing energy = ((0.02*(size^2))+(0.71*compute_resource_0.flops))
-        }
-    }
+component component_0c0 {
+ contract implementation_0c0i0 {
+  requires resource compute_resource_0 of type ComputeNode with {
+   cpu_0 of type CPU
+   ram_1 of type RAM
+   disk_1 of type DISK
+   network_1 of type NETWORK
+  }
+  requiring cpu_0.frequency >= 1715.0
+  requiring ram_1.total >= 8262.0
+  requiring disk_1.total >= 8706.0
+  requiring network_1.throughput >= 33655.0
+  providing quality = 45.0
+  providing energy = ((0.31*(size^2.0))+(0.12*cpu_0.frequency))
+  
+ }
+ contract implementation_0c0i1 {
+  requires resource compute_resource_0 of type ComputeNode with {
+   cpu_0 of type CPU
+   ram_1 of type RAM
+   disk_1 of type DISK
+   network_1 of type NETWORK
+  }
+  requiring cpu_0.frequency >= 2290.0
+  requiring ram_1.total >= 8914.0
+  requiring disk_1.total >= 3658.0
+  requiring network_1.throughput >= 61931.0
+  providing quality = 65.0
+  providing energy = ((0.98*(size^2.0))+(0.88*cpu_0.frequency))
+  
+ }
+ using property quality
+ using property energy
 }
 
-component component_0i1_0 {
-    contract implementation_0i1_0i0 {
-        requires resource compute_resource_0 of type ComputeNode
-        requires resource cpu_0 of type CPU
-        requires resource cpu_1 of type CPU
-        requires resource cpu_2 of type CPU
-        requires resource cpu_3 of type CPU
-        requires resource ram_1 of type RAM
-        requires resource disk_1 of type DISK
-        requires resource network_1 of type NETWORK
-
-        mode configuration_0i1_0i0m0 {
-            requiring cpu_0.frequency >= 2540
-            requiring cpu_1.frequency >= 2540
-            requiring cpu_2.frequency >= 2540
-            requiring cpu_3.frequency >= 2540
-            requiring ram_1.total >= 5708
-            requiring disk_1.total >= 11314
-            requiring network_1.throughput >= 87018
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 36
-            providing energy = ((0.77*(size^2))+(0.8*compute_resource_0.flops))
-        }
-        mode configuration_0i1_0i0m1 {
-            requiring cpu_0.frequency >= 2303
-            requiring cpu_1.frequency >= 2303
-            requiring cpu_2.frequency >= 2303
-            requiring cpu_3.frequency >= 2303
-            requiring ram_1.total >= 13297
-            requiring disk_1.total >= 15689
-            requiring network_1.throughput >= 2820
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 54
-            providing energy = ((0.21*(size^2))+(0.92*compute_resource_0.flops))
-        }
-    }
-}
-
-component component_0i1_1 {
-    contract implementation_0i1_1i0 {
-        requires resource compute_resource_0 of type ComputeNode
-        requires resource cpu_0 of type CPU
-        requires resource cpu_1 of type CPU
-        requires resource cpu_2 of type CPU
-        requires resource cpu_3 of type CPU
-        requires resource ram_1 of type RAM
-        requires resource disk_1 of type DISK
-        requires resource network_1 of type NETWORK
-
-        mode configuration_0i1_1i0m0 {
-            requiring cpu_0.frequency >= 1941
-            requiring cpu_1.frequency >= 1941
-            requiring cpu_2.frequency >= 1941
-            requiring cpu_3.frequency >= 1941
-            requiring ram_1.total >= 6327
-            requiring disk_1.total >= 6875
-            requiring network_1.throughput >= 99879
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 6
-            providing energy = ((0.67*(size^2))+(0.4*compute_resource_0.flops))
-        }
-        mode configuration_0i1_1i0m1 {
-            requiring cpu_0.frequency >= 2896
-            requiring cpu_1.frequency >= 2896
-            requiring cpu_2.frequency >= 2896
-            requiring cpu_3.frequency >= 2896
-            requiring ram_1.total >= 15404
-            requiring disk_1.total >= 4378
-            requiring network_1.throughput >= 94766
-            providing compute_resource_0.flops = (((cpu_0.frequency+cpu_1.frequency)+cpu_2.frequency)+cpu_3.frequency)
-            providing quality = 27
-            providing energy = ((0.47*(size^2))+(0.11*compute_resource_0.flops))
-        }
-    }
+component component_0c1 {
+ contract implementation_0c1i0 {
+  requires resource compute_resource_0 of type ComputeNode with {
+   cpu_0 of type CPU
+   ram_1 of type RAM
+   disk_1 of type DISK
+   network_1 of type NETWORK
+  }
+  requiring cpu_0.frequency >= 2038.0
+  requiring ram_1.total >= 8941.0
+  requiring disk_1.total >= 11052.0
+  requiring network_1.throughput >= 85378.0
+  providing quality = 86.0
+  providing energy = ((0.37*(size^2.0))+(0.71*cpu_0.frequency))
+  
+ }
+ contract implementation_0c1i1 {
+  requires resource compute_resource_0 of type ComputeNode with {
+   cpu_0 of type CPU
+   ram_1 of type RAM
+   disk_1 of type DISK
+   network_1 of type NETWORK
+  }
+  requiring cpu_0.frequency >= 2192.0
+  requiring ram_1.total >= 7448.0
+  requiring disk_1.total >= 15946.0
+  requiring network_1.throughput >= 6181.0
+  providing quality = 89.0
+  providing energy = ((0.1*(size^2.0))+(0.63*cpu_0.frequency))
+  
+ }
+ using property quality
+ using property energy
 }
 
-request component_0 {
-    meta size = 6
-    requiring quality >= 35
+request request0 for component_0 {
+ meta size = 144.0
+ requiring quality >= 96.0
 }
 minimize sum(energy)
-- 
GitLab