From 8fc51811dadc4dac2e5fcfda60a223bfef36d1e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Klervie=20Tocz=C3=A9?= <klervie.tocze@liu.se>
Date: Fri, 27 Sep 2024 18:58:48 +0200
Subject: [PATCH] Initial code commit

---
 Code/.idea/.gitignore                         |    3 +
 Code/.idea/libraries/jgrapht_core.xml         |   11 +
 Code/.idea/misc.xml                           |    6 +
 Code/.idea/modules.xml                        |    8 +
 Code/.idea/uiDesigner.xml                     |  124 +
 Code/Code.iml                                 |   40 +
 Code/gurobi.log                               | 9017 +++++++++++++++++
 .../Code/MixedReality_Optimization.class      |  Bin 0 -> 7057 bytes
 .../production/Code/application/AppLink.class |  Bin 0 -> 1837 bytes
 .../Code/application/Application.class        |  Bin 0 -> 2791 bytes
 Code/out/production/Code/device/Device.class  |  Bin 0 -> 2032 bytes
 .../OptimalRequestPlacement_Marginal.class    |  Bin 0 -> 13056 bytes
 .../OptimalRequestPlacement_Overall.class     |  Bin 0 -> 13037 bytes
 .../placement/RequestPlacementLogic.class     |  Bin 0 -> 229 bytes
 .../placement/RequestPlacementOutput.class    |  Bin 0 -> 1884 bytes
 .../Code/solver/SolverGurobi$1.class          |  Bin 0 -> 670 bytes
 .../Code/solver/SolverGurobi$Hook.class       |  Bin 0 -> 488 bytes
 .../production/Code/solver/SolverGurobi.class |  Bin 0 -> 8435 bytes
 .../out/production/Code/system/Location.class |  Bin 0 -> 376 bytes
 Code/out/production/Code/system/Network.class |  Bin 0 -> 17895 bytes
 Code/out/production/Code/utils/Config.class   |  Bin 0 -> 681 bytes
 .../production/Code/utils/Distribution.class  |  Bin 0 -> 462 bytes
 .../Code/utils/NormalDistribution.class       |  Bin 0 -> 884 bytes
 Code/out/production/Code/utils/Triple.class   |  Bin 0 -> 1505 bytes
 Code/out/production/Code/utils/Utils.class    |  Bin 0 -> 2428 bytes
 Code/src/MixedReality_Optimization.java       |  224 +
 Code/src/application/AppLink.java             |   56 +
 Code/src/application/Application.java         |   83 +
 Code/src/device/Device.java                   |   62 +
 .../OptimalRequestPlacement_Marginal.java     |  358 +
 .../OptimalRequestPlacement_Overall.java      |  358 +
 Code/src/placement/RequestPlacementLogic.java |   10 +
 .../src/placement/RequestPlacementOutput.java |   48 +
 Code/src/solver/SolverGurobi.java             |  190 +
 Code/src/system/Location.java                 |   12 +
 Code/src/system/Network.java                  |  600 ++
 Code/src/utils/Config.java                    |   14 +
 Code/src/utils/Distribution.java              |   14 +
 Code/src/utils/NormalDistribution.java        |   29 +
 Code/src/utils/Triple.java                    |   40 +
 Code/src/utils/Utils.java                     |   73 +
 41 files changed, 11380 insertions(+)
 create mode 100644 Code/.idea/.gitignore
 create mode 100644 Code/.idea/libraries/jgrapht_core.xml
 create mode 100644 Code/.idea/misc.xml
 create mode 100644 Code/.idea/modules.xml
 create mode 100644 Code/.idea/uiDesigner.xml
 create mode 100644 Code/Code.iml
 create mode 100644 Code/gurobi.log
 create mode 100644 Code/out/production/Code/MixedReality_Optimization.class
 create mode 100644 Code/out/production/Code/application/AppLink.class
 create mode 100644 Code/out/production/Code/application/Application.class
 create mode 100644 Code/out/production/Code/device/Device.class
 create mode 100644 Code/out/production/Code/placement/OptimalRequestPlacement_Marginal.class
 create mode 100644 Code/out/production/Code/placement/OptimalRequestPlacement_Overall.class
 create mode 100644 Code/out/production/Code/placement/RequestPlacementLogic.class
 create mode 100644 Code/out/production/Code/placement/RequestPlacementOutput.class
 create mode 100644 Code/out/production/Code/solver/SolverGurobi$1.class
 create mode 100644 Code/out/production/Code/solver/SolverGurobi$Hook.class
 create mode 100644 Code/out/production/Code/solver/SolverGurobi.class
 create mode 100644 Code/out/production/Code/system/Location.class
 create mode 100644 Code/out/production/Code/system/Network.class
 create mode 100644 Code/out/production/Code/utils/Config.class
 create mode 100644 Code/out/production/Code/utils/Distribution.class
 create mode 100644 Code/out/production/Code/utils/NormalDistribution.class
 create mode 100644 Code/out/production/Code/utils/Triple.class
 create mode 100644 Code/out/production/Code/utils/Utils.class
 create mode 100644 Code/src/MixedReality_Optimization.java
 create mode 100644 Code/src/application/AppLink.java
 create mode 100644 Code/src/application/Application.java
 create mode 100644 Code/src/device/Device.java
 create mode 100644 Code/src/placement/OptimalRequestPlacement_Marginal.java
 create mode 100644 Code/src/placement/OptimalRequestPlacement_Overall.java
 create mode 100644 Code/src/placement/RequestPlacementLogic.java
 create mode 100644 Code/src/placement/RequestPlacementOutput.java
 create mode 100644 Code/src/solver/SolverGurobi.java
 create mode 100644 Code/src/system/Location.java
 create mode 100644 Code/src/system/Network.java
 create mode 100644 Code/src/utils/Config.java
 create mode 100644 Code/src/utils/Distribution.java
 create mode 100644 Code/src/utils/NormalDistribution.java
 create mode 100644 Code/src/utils/Triple.java
 create mode 100644 Code/src/utils/Utils.java

diff --git a/Code/.idea/.gitignore b/Code/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/Code/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/Code/.idea/libraries/jgrapht_core.xml b/Code/.idea/libraries/jgrapht_core.xml
new file mode 100644
index 0000000..1e9cf52
--- /dev/null
+++ b/Code/.idea/libraries/jgrapht_core.xml
@@ -0,0 +1,11 @@
+<component name="libraryTable">
+  <library name="jgrapht.core" type="repository">
+    <properties maven-id="org.jgrapht:jgrapht-core:1.4.0" />
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/jgrapht/jgrapht-core/1.4.0/jgrapht-core-1.4.0.jar!/" />
+      <root url="jar://$MAVEN_REPOSITORY$/org/jheaps/jheaps/0.11/jheaps-0.11.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/Code/.idea/misc.xml b/Code/.idea/misc.xml
new file mode 100644
index 0000000..7d862fb
--- /dev/null
+++ b/Code/.idea/misc.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="corretto-11" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/Code/.idea/modules.xml b/Code/.idea/modules.xml
new file mode 100644
index 0000000..f9b4ee2
--- /dev/null
+++ b/Code/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/Code.iml" filepath="$PROJECT_DIR$/Code.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/Code/.idea/uiDesigner.xml b/Code/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/Code/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
\ No newline at end of file
diff --git a/Code/Code.iml b/Code/Code.iml
new file mode 100644
index 0000000..0d50060
--- /dev/null
+++ b/Code/Code.iml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../../../Simulateurs/iFogSim2/iFogSim/jars/gurobi.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/../../../Simulateurs/iFogSim2/iFogSim/jars/javailp-1.2a.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="file://$MODULE_DIR$/../../../Simulateurs/iFogSim2/iFogSim/jars/commons-math3-3.5" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+        <jarDirectory url="file://$MODULE_DIR$/../../../Simulateurs/iFogSim2/iFogSim/jars/commons-math3-3.5" recursive="false" />
+      </library>
+    </orderEntry>
+    <orderEntry type="library" name="jgrapht.core" level="project" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/Code/gurobi.log b/Code/gurobi.log
new file mode 100644
index 0000000..de6ac2c
--- /dev/null
+++ b/Code/gurobi.log
@@ -0,0 +1,9017 @@
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:42 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:43 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:44 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:45 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:46 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:46 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:47 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:47 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:47 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:48 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:48 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:49 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:49 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:50 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:50 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:50 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:51 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:51 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:52 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:52 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:52 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:53 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:53 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:53 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:53 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:54 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:54 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:54 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:55 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:55 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:55 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:55 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:56 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:56 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:57 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:57 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:57 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:58 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:58 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:58 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:58 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:59 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:59 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:59 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:59 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:27:59 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:00 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:00 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:00 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:00 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:00 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:00 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:01 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:01 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:01 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:01 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:01 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:01 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:02 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:02 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:02 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:02 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:02 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:02 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:03 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:03 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:03 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:03 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:03 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:04 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:04 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:04 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:04 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:04 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:05 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:05 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:05 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:05 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:05 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:05 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:06 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:06 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:06 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:06 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:06 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:07 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:07 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:07 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:07 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:07 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:07 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:08 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:08 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:08 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:08 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:08 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:09 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:09 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:09 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:09 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:09 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:10 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:10 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:10 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:10 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:10 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:11 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:28:11 2024
+
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:47:51 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x48c622f9
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.13 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:47:52 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x48c622f9
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.15 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:47:54 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x315081c9
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.07s
+
+Explored 0 nodes (0 simplex iterations) in 0.14 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:47:55 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x315081c9
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.15 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:47:56 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xda1d9508
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.15 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:47:57 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xda1d9508
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.17 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:47:58 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x54319f3a
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.16s
+
+Explored 0 nodes (0 simplex iterations) in 0.32 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 14:47:59 2024
+
+Academic license - for non-commercial use only
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:13 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x48c622f9
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.17 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:15 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x48c622f9
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:17 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x315081c9
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:18 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x315081c9
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.15 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:19 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xda1d9508
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:20 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xda1d9508
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:21 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x54319f3a
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:22 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x54319f3a
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:23 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x671e62fe
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.15 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:24 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x671e62fe
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:25 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xa38f2e5f
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [4e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:25 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xa38f2e5f
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [4e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:26 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x9af763dc
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [4e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:27 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x9af763dc
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [4e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:28 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xf8c853c5
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [4e+01, 8e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.15 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:29 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xf8c853c5
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [4e+01, 8e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:30 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x9bb0a40b
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [4e+01, 1e+05]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4428 rows and 3176 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.17 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:30 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x9bb0a40b
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [4e+01, 1e+05]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4428 rows and 3176 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.18 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:31 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85593 nonzeros
+Model fingerprint: 0xa135b765
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [4e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4362 rows and 3646 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.13 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:32 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85593 nonzeros
+Model fingerprint: 0xa135b765
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [4e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4362 rows and 3646 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:33 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85609 nonzeros
+Model fingerprint: 0x8b932602
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4378 rows and 4120 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.12 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:33 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85609 nonzeros
+Model fingerprint: 0x8b932602
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4378 rows and 4120 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.12 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:34 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xaf4adb34
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.13s
+
+Explored 0 nodes (0 simplex iterations) in 0.19 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:35 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xaf4adb34
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.14 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:36 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x28039bbc
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.07s
+
+Explored 0 nodes (0 simplex iterations) in 0.13 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:36 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x28039bbc
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.14 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:37 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xd60673db
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.11s
+
+Explored 0 nodes (0 simplex iterations) in 0.18 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:38 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xd60673db
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.07s
+
+Explored 0 nodes (0 simplex iterations) in 0.13 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:39 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xfa097477
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.07s
+
+Explored 0 nodes (0 simplex iterations) in 0.13 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:39 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xfa097477
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.07s
+
+Explored 0 nodes (0 simplex iterations) in 0.15 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:40 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xc20e5e13
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.12s
+
+Explored 0 nodes (0 simplex iterations) in 0.19 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:41 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xc20e5e13
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.12 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:42 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x46e29f20
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:42 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x46e29f20
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.15 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:43 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x5d97937e
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [4e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:44 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x5d97937e
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [4e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.07s
+
+Explored 0 nodes (0 simplex iterations) in 0.14 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:44 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x8dd9689c
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 3e+02]
+  Objective range  [4e+01, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.13 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:45 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0x8dd9689c
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 3e+02]
+  Objective range  [4e+01, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.13 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:46 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85585 nonzeros
+Model fingerprint: 0x3abfb53a
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [4e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4354 rows and 3326 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.12 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:46 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85585 nonzeros
+Model fingerprint: 0x3abfb53a
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [4e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4354 rows and 3326 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.13 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:47 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85593 nonzeros
+Model fingerprint: 0x3bca734d
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4362 rows and 3690 columns
+Presolve time: 0.07s
+
+Explored 0 nodes (0 simplex iterations) in 0.13 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:47 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85593 nonzeros
+Model fingerprint: 0x3bca734d
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4362 rows and 3690 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.14 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:48 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85597 nonzeros
+Model fingerprint: 0x6d5fce7a
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [1e+02, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4366 rows and 4020 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.13 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:48 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85597 nonzeros
+Model fingerprint: 0x6d5fce7a
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 4e+04]
+  Objective range  [1e+02, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4366 rows and 4020 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.12 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:49 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xe9dff1b8
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.05s
+
+Explored 0 nodes (0 simplex iterations) in 0.11 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:50 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xe9dff1b8
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.07s
+
+Explored 0 nodes (0 simplex iterations) in 0.12 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:50 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xf8c376c3
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.09s
+
+Explored 0 nodes (0 simplex iterations) in 0.16 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:51 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xf8c376c3
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.10s
+
+Explored 0 nodes (0 simplex iterations) in 0.19 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:52 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xb84d54ee
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.08s
+
+Explored 0 nodes (0 simplex iterations) in 0.17 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:05:52 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 5332 rows, 4278 columns and 85581 nonzeros
+Model fingerprint: 0xb84d54ee
+Variable types: 0 continuous, 4278 integer (2162 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 2e+02]
+  Objective range  [3e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 4416 rows and 3152 columns
+Presolve time: 0.16s
+
+Explored 0 nodes (0 simplex iterations) in 0.26 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:45 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x9f27c4df
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.612127e+02, 91 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  361.21268    0   14          -  361.21268      -     -    0s
+     0     0  445.70080    0   30          -  445.70080      -     -    0s
+     0     0  446.20384    0   20          -  446.20384      -     -    0s
+     0     0  446.95771    0   35          -  446.95771      -     -    0s
+     0     0  467.98069    0   28          -  467.98069      -     -    0s
+     0     0  468.22258    0   29          -  468.22258      -     -    0s
+     0     0  618.26001    0   33          -  618.26001      -     -    0s
+     0     0  618.26001    0   33          -  618.26001      -     -    0s
+     0     0  684.01168    0   36          -  684.01168      -     -    0s
+     0     0  687.96070    0   36          -  687.96070      -     -    0s
+H    0     0                     777.4852859  687.96070  11.5%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 11
+  StrongCG: 2
+  Flow cover: 10
+  Zero half: 1
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (212 simplex iterations) in 0.47 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 777.485 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.774852859196e+02, best bound 7.774852859196e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:46 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x9f27c4df
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.612127e+02, 91 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  361.21268    0   14          -  361.21268      -     -    0s
+     0     0  445.70080    0   30          -  445.70080      -     -    0s
+     0     0  446.20384    0   20          -  446.20384      -     -    0s
+     0     0  446.95771    0   35          -  446.95771      -     -    0s
+     0     0  467.98069    0   28          -  467.98069      -     -    0s
+     0     0  468.22258    0   29          -  468.22258      -     -    0s
+     0     0  618.26001    0   33          -  618.26001      -     -    0s
+     0     0  618.26001    0   33          -  618.26001      -     -    0s
+     0     0  684.01168    0   36          -  684.01168      -     -    0s
+     0     0  687.96070    0   36          -  687.96070      -     -    0s
+H    0     0                     777.4852859  687.96070  11.5%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 11
+  StrongCG: 2
+  Flow cover: 10
+  Zero half: 1
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (212 simplex iterations) in 0.45 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 777.485 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.774852859196e+02, best bound 7.774852859196e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:47 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xa1887ec7
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.631469e+02, 86 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  363.14695    0   14          -  363.14695      -     -    0s
+     0     0  447.74726    0   34          -  447.74726      -     -    0s
+     0     0  448.74355    0   34          -  448.74355      -     -    0s
+     0     0  448.99477    0   34          -  448.99477      -     -    0s
+     0     0  467.28964    0   25          -  467.28964      -     -    0s
+     0     0  467.31618    0   25          -  467.31618      -     -    0s
+     0     0  589.70129    0   30          -  589.70129      -     -    0s
+     0     0  594.55652    0   32          -  594.55652      -     -    0s
+     0     0  594.55652    0   31          -  594.55652      -     -    0s
+     0     0  616.90013    0   31          -  616.90013      -     -    0s
+     0     0  616.90013    0   33          -  616.90013      -     -    0s
+H    0     0                     985.6827395  616.90013  37.4%     -    0s
+H    0     0                     777.0967571  616.90013  20.6%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 16
+  StrongCG: 1
+  Flow cover: 5
+  Zero half: 2
+  Mod-K: 2
+  RLT: 2
+
+Explored 1 nodes (211 simplex iterations) in 0.42 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 777.097 985.683 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.770967571098e+02, best bound 7.770967571098e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:47 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xa1887ec7
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.631469e+02, 86 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  363.14695    0   14          -  363.14695      -     -    0s
+     0     0  447.74726    0   34          -  447.74726      -     -    0s
+     0     0  448.74355    0   34          -  448.74355      -     -    0s
+     0     0  448.99477    0   34          -  448.99477      -     -    0s
+     0     0  467.28964    0   25          -  467.28964      -     -    0s
+     0     0  467.31618    0   25          -  467.31618      -     -    0s
+     0     0  589.70129    0   30          -  589.70129      -     -    0s
+     0     0  594.55652    0   32          -  594.55652      -     -    0s
+     0     0  594.55652    0   31          -  594.55652      -     -    0s
+     0     0  616.90013    0   31          -  616.90013      -     -    0s
+     0     0  616.90013    0   33          -  616.90013      -     -    0s
+H    0     0                     985.6827395  616.90013  37.4%     -    0s
+H    0     0                     777.0967571  616.90013  20.6%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 16
+  StrongCG: 1
+  Flow cover: 5
+  Zero half: 2
+  Mod-K: 2
+  RLT: 2
+
+Explored 1 nodes (211 simplex iterations) in 0.41 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 777.097 985.683 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.770967571098e+02, best bound 7.770967571098e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:47 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x8264b64e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.669926e+02, 91 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  366.99259    0   14          -  366.99259      -     -    0s
+     0     0  454.81034    0   26          -  454.81034      -     -    0s
+     0     0  455.32449    0   20          -  455.32449      -     -    0s
+     0     0  455.86124    0   35          -  455.86124      -     -    0s
+     0     0  476.81381    0   26          -  476.81381      -     -    0s
+     0     0  480.81179    0   26          -  480.81179      -     -    0s
+     0     0  482.50283    0   29          -  482.50283      -     -    0s
+     0     0  622.05385    0   41          -  622.05385      -     -    0s
+     0     0  622.05385    0   41          -  622.05385      -     -    0s
+     0     0  622.05385    0   30          -  622.05385      -     -    0s
+H    0     0                     814.1555193  622.05385  23.6%     -    0s
+H    0     0                     782.4647174  622.05385  20.5%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 15
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (256 simplex iterations) in 0.43 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 782.465 814.156 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.824647173694e+02, best bound 7.824647173694e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:48 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x8264b64e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.669926e+02, 91 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  366.99259    0   14          -  366.99259      -     -    0s
+     0     0  454.81034    0   26          -  454.81034      -     -    0s
+     0     0  455.32449    0   20          -  455.32449      -     -    0s
+     0     0  455.86124    0   35          -  455.86124      -     -    0s
+     0     0  476.81381    0   26          -  476.81381      -     -    0s
+     0     0  480.81179    0   26          -  480.81179      -     -    0s
+     0     0  482.50283    0   29          -  482.50283      -     -    0s
+     0     0  622.05385    0   41          -  622.05385      -     -    0s
+     0     0  622.05385    0   41          -  622.05385      -     -    0s
+     0     0  622.05385    0   30          -  622.05385      -     -    0s
+H    0     0                     814.1555193  622.05385  23.6%     -    0s
+H    0     0                     782.4647174  622.05385  20.5%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 15
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (256 simplex iterations) in 0.43 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 782.465 814.156 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.824647173694e+02, best bound 7.824647173694e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:48 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe9a197c9
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.735041e+02, 97 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  373.50407    0   14          -  373.50407      -     -    0s
+     0     0  457.64418    0   29          -  457.64418      -     -    0s
+     0     0  458.43041    0   33          -  458.43041      -     -    0s
+     0     0  459.32719    0   34          -  459.32719      -     -    0s
+     0     0  459.37579    0   34          -  459.37579      -     -    0s
+H    0     0                     790.8262513  459.37579  41.9%     -    0s
+     0     0  495.37323    0   27  790.82625  495.37323  37.4%     -    0s
+     0     0  499.12085    0   28  790.82625  499.12085  36.9%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 16
+  Flow cover: 12
+  Inf proof: 2
+  Zero half: 3
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (162 simplex iterations) in 0.28 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 790.826 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.908262512524e+02, best bound 7.908262512524e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:49 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe9a197c9
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.735041e+02, 97 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  373.50407    0   14          -  373.50407      -     -    0s
+     0     0  457.64418    0   29          -  457.64418      -     -    0s
+     0     0  458.43041    0   33          -  458.43041      -     -    0s
+     0     0  459.32719    0   34          -  459.32719      -     -    0s
+     0     0  459.37579    0   34          -  459.37579      -     -    0s
+H    0     0                     790.8262513  459.37579  41.9%     -    0s
+     0     0  495.37323    0   27  790.82625  495.37323  37.4%     -    0s
+     0     0  499.12085    0   28  790.82625  499.12085  36.9%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 16
+  Flow cover: 12
+  Inf proof: 2
+  Zero half: 3
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (162 simplex iterations) in 0.29 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 790.826 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.908262512524e+02, best bound 7.908262512524e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:49 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x7f8d7a00
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.769709e+02, 94 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  376.97085    0   14          -  376.97085      -     -    0s
+     0     0  462.98331    0   30          -  462.98331      -     -    0s
+     0     0  463.49240    0   32          -  463.49240      -     -    0s
+     0     0  463.92382    0   34          -  463.92382      -     -    0s
+     0     0  489.82122    0   31          -  489.82122      -     -    0s
+     0     0  491.01412    0   30          -  491.01412      -     -    0s
+H    0     0                     819.0298409  491.01412  40.0%     -    0s
+H    0     0                     793.8472735  491.01412  38.1%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 15
+  StrongCG: 1
+  Flow cover: 11
+  Inf proof: 1
+  RLT: 3
+
+Explored 1 nodes (177 simplex iterations) in 0.45 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 793.847 819.03 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.938472734776e+02, best bound 7.938472734776e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:50 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x7f8d7a00
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.769709e+02, 94 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  376.97085    0   14          -  376.97085      -     -    0s
+     0     0  462.98331    0   30          -  462.98331      -     -    0s
+     0     0  463.49240    0   32          -  463.49240      -     -    0s
+     0     0  463.92382    0   34          -  463.92382      -     -    0s
+     0     0  489.82122    0   31          -  489.82122      -     -    0s
+     0     0  491.01412    0   30          -  491.01412      -     -    0s
+H    0     0                     819.0298409  491.01412  40.0%     -    0s
+H    0     0                     793.8472735  491.01412  38.1%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 15
+  StrongCG: 1
+  Flow cover: 11
+  Inf proof: 1
+  RLT: 3
+
+Explored 1 nodes (177 simplex iterations) in 0.33 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 793.847 819.03 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.938472734776e+02, best bound 7.938472734776e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:50 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x47f74b14
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.06s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.965968e+02, 87 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  396.59685    0   14          -  396.59685      -     -    0s
+     0     0  480.80107    0   33          -  480.80107      -     -    0s
+H    0     0                     829.9074799  480.80107  42.1%     -    0s
+     0     0  481.39663    0   35  829.90748  481.39663  42.0%     -    0s
+     0     0  553.91629    0   25  829.90748  553.91629  33.3%     -    0s
+     0     0  593.47073    0   29  829.90748  593.47073  28.5%     -    0s
+     0     0  597.95780    0   33  829.90748  597.95780  27.9%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 9
+  Inf proof: 2
+  Zero half: 5
+  RLT: 2
+
+Explored 1 nodes (175 simplex iterations) in 0.37 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 829.907 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.299074798515e+02, best bound 8.299074798515e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:50 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x47f74b14
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.965968e+02, 87 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  396.59685    0   14          -  396.59685      -     -    0s
+     0     0  480.80107    0   33          -  480.80107      -     -    0s
+H    0     0                     829.9074799  480.80107  42.1%     -    0s
+     0     0  481.39663    0   35  829.90748  481.39663  42.0%     -    0s
+     0     0  553.91629    0   25  829.90748  553.91629  33.3%     -    0s
+     0     0  593.47073    0   29  829.90748  593.47073  28.5%     -    0s
+     0     0  597.95780    0   33  829.90748  597.95780  27.9%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 9
+  Inf proof: 2
+  Zero half: 5
+  RLT: 2
+
+Explored 1 nodes (175 simplex iterations) in 0.30 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 829.907 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.299074798515e+02, best bound 8.299074798515e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:51 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x715e9916
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 4.191180e+02, 88 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  419.11800    0   14          -  419.11800      -     -    0s
+     0     0  493.86511    0   31          -  493.86511      -     -    0s
+     0     0  494.75310    0   33          -  494.75310      -     -    0s
+     0     0  495.77935    0   35          -  495.77935      -     -    0s
+     0     0  517.15766    0   26          -  517.15766      -     -    0s
+H    0     0                     866.9599398  517.15766  40.3%     -    0s
+     0     0  525.83651    0   23  866.95994  525.83651  39.3%     -    0s
+     0     0  525.83651    0   23  866.95994  525.83651  39.3%     -    0s
+H    0     0                     847.3391449  525.83651  37.9%     -    0s
+     0     0  707.64888    0   36  847.33914  707.64888  16.5%     -    0s
+     0     0  757.55261    0   35  847.33914  757.55261  10.6%     -    0s
+     0     0  765.95177    0   35  847.33914  765.95177  9.61%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 17
+  Flow cover: 7
+  Inf proof: 1
+  Zero half: 7
+  RLT: 4
+
+Explored 1 nodes (175 simplex iterations) in 0.41 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 847.339 866.96 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.473391448781e+02, best bound 8.473391448781e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:51 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x715e9916
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 4.191180e+02, 88 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  419.11800    0   14          -  419.11800      -     -    0s
+     0     0  493.86511    0   31          -  493.86511      -     -    0s
+     0     0  494.75310    0   33          -  494.75310      -     -    0s
+     0     0  495.77935    0   35          -  495.77935      -     -    0s
+     0     0  517.15766    0   26          -  517.15766      -     -    0s
+H    0     0                     866.9599398  517.15766  40.3%     -    0s
+     0     0  525.83651    0   23  866.95994  525.83651  39.3%     -    0s
+     0     0  525.83651    0   23  866.95994  525.83651  39.3%     -    0s
+H    0     0                     847.3391449  525.83651  37.9%     -    0s
+     0     0  707.64888    0   36  847.33914  707.64888  16.5%     -    0s
+     0     0  757.55261    0   35  847.33914  757.55261  10.6%     -    0s
+     0     0  765.95177    0   35  847.33914  765.95177  9.61%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 17
+  Flow cover: 7
+  Inf proof: 1
+  Zero half: 7
+  RLT: 4
+
+Explored 1 nodes (175 simplex iterations) in 0.40 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 847.339 866.96 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.473391448781e+02, best bound 8.473391448781e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:52 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xa068249a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+Found heuristic solution: objective 922.7580884
+
+Root relaxation: objective 4.196677e+02, 80 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  419.66767    0   14  922.75809  419.66767  54.5%     -    0s
+     0     0  516.38146    0   30  922.75809  516.38146  44.0%     -    0s
+     0     0  518.10740    0   36  922.75809  518.10740  43.9%     -    0s
+     0     0  584.91355    0   23  922.75809  584.91355  36.6%     -    0s
+     0     0  632.02275    0   33  922.75809  632.02275  31.5%     -    0s
+     0     0  633.13855    0   34  922.75809  633.13855  31.4%     -    0s
+H    0     0                     878.2952021  633.13855  27.9%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 10
+  Flow cover: 10
+  Inf proof: 1
+  Zero half: 4
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (182 simplex iterations) in 0.35 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 878.295 922.758 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.782952021047e+02, best bound 8.782952021047e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:52 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xa068249a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+Found heuristic solution: objective 922.7580884
+
+Root relaxation: objective 4.196677e+02, 80 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  419.66767    0   14  922.75809  419.66767  54.5%     -    0s
+     0     0  516.38146    0   30  922.75809  516.38146  44.0%     -    0s
+     0     0  518.10740    0   36  922.75809  518.10740  43.9%     -    0s
+     0     0  584.91355    0   23  922.75809  584.91355  36.6%     -    0s
+     0     0  632.02275    0   33  922.75809  632.02275  31.5%     -    0s
+     0     0  633.13855    0   34  922.75809  633.13855  31.4%     -    0s
+H    0     0                     878.2952021  633.13855  27.9%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 10
+  Flow cover: 10
+  Inf proof: 1
+  Zero half: 4
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (182 simplex iterations) in 0.32 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 878.295 922.758 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.782952021047e+02, best bound 8.782952021047e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:52 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x410a323e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 1e+05]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 825 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 5.058364e+02, 74 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  505.83641    0   15          -  505.83641      -     -    0s
+     0     0  599.48211    0   36          -  599.48211      -     -    0s
+     0     0  602.91370    0   34          -  602.91370      -     -    0s
+     0     0  628.13414    0   39          -  628.13414      -     -    0s
+     0     0  632.95363    0   39          -  632.95363      -     -    0s
+     0     0  633.17689    0   40          -  633.17689      -     -    0s
+H    0     0                     977.7633232  633.17689  35.2%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Clique: 1
+  MIR: 17
+  StrongCG: 2
+  Flow cover: 7
+  Zero half: 1
+  Mod-K: 1
+  RLT: 9
+
+Explored 1 nodes (151 simplex iterations) in 0.30 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 977.763 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 9.777633232288e+02, best bound 9.777633232288e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:53 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x410a323e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 1e+05]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 825 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 5.058364e+02, 74 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  505.83641    0   15          -  505.83641      -     -    0s
+     0     0  599.48211    0   36          -  599.48211      -     -    0s
+     0     0  602.91370    0   34          -  602.91370      -     -    0s
+     0     0  628.13414    0   39          -  628.13414      -     -    0s
+     0     0  632.95363    0   39          -  632.95363      -     -    0s
+     0     0  633.17689    0   40          -  633.17689      -     -    0s
+H    0     0                     977.7633232  633.17689  35.2%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Clique: 1
+  MIR: 17
+  StrongCG: 2
+  Flow cover: 7
+  Zero half: 1
+  Mod-K: 1
+  RLT: 9
+
+Explored 1 nodes (151 simplex iterations) in 0.32 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 977.763 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 9.777633232288e+02, best bound 9.777633232288e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:53 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1373 nonzeros
+Model fingerprint: 0xdc21f627
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 157 rows and 204 columns
+Presolve time: 0.02s
+
+Explored 0 nodes (0 simplex iterations) in 0.02 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:53 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1373 nonzeros
+Model fingerprint: 0xdc21f627
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 157 rows and 204 columns
+Presolve time: 0.03s
+
+Explored 0 nodes (0 simplex iterations) in 0.03 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:53 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1377 nonzeros
+Model fingerprint: 0x85610366
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 6 rows and 63 columns
+Presolve time: 0.00s
+
+Explored 0 nodes (0 simplex iterations) in 0.01 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:53 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1377 nonzeros
+Model fingerprint: 0x85610366
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 6 rows and 63 columns
+Presolve time: 0.00s
+
+Explored 0 nodes (0 simplex iterations) in 0.00 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:53 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x270a20b2
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.612904e+02, 91 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  361.29040    0   14          -  361.29040      -     -    0s
+     0     0  446.45478    0   34          -  446.45478      -     -    0s
+H    0     0                     774.8181295  446.45478  42.4%     -    0s
+     0     0  446.63812    0   35  774.81813  446.63812  42.4%     -    0s
+     0     0  468.00635    0   23  774.81813  468.00635  39.6%     -    0s
+     0     0  473.12403    0   21  774.81813  473.12403  38.9%     -    0s
+     0     0  598.34280    0   29  774.81813  598.34280  22.8%     -    0s
+     0     0  598.34280    0   31  774.81813  598.34280  22.8%     -    0s
+     0     0  598.34280    0   33  774.81813  598.34280  22.8%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 14
+  Flow cover: 13
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (211 simplex iterations) in 0.47 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 774.818 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.748181294994e+02, best bound 7.747713995505e+02, gap 0.0060%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:54 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x270a20b2
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.612904e+02, 91 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  361.29040    0   14          -  361.29040      -     -    0s
+     0     0  446.45478    0   34          -  446.45478      -     -    0s
+H    0     0                     774.8181295  446.45478  42.4%     -    0s
+     0     0  446.63812    0   35  774.81813  446.63812  42.4%     -    0s
+     0     0  468.00635    0   23  774.81813  468.00635  39.6%     -    0s
+     0     0  473.12403    0   21  774.81813  473.12403  38.9%     -    0s
+     0     0  598.34280    0   29  774.81813  598.34280  22.8%     -    0s
+     0     0  598.34280    0   31  774.81813  598.34280  22.8%     -    0s
+     0     0  598.34280    0   33  774.81813  598.34280  22.8%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 14
+  Flow cover: 13
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (211 simplex iterations) in 0.36 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 774.818 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.748181294994e+02, best bound 7.747713995505e+02, gap 0.0060%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:54 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4043d94b
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.637007e+02, 92 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  363.70075    0   14          -  363.70075      -     -    0s
+     0     0  450.32351    0   33          -  450.32351      -     -    0s
+     0     0  451.09419    0   34          -  451.09419      -     -    0s
+     0     0  451.20327    0   35          -  451.20327      -     -    0s
+     0     0  470.18596    0   27          -  470.18596      -     -    0s
+     0     0  470.52219    0   27          -  470.52219      -     -    0s
+H    0     0                     806.9075458  470.52219  41.7%     -    0s
+H    0     0                     777.9670646  470.52219  39.5%     -    0s
+     0     0  777.90792    0   36  777.96706  777.90792  0.01%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 15
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (215 simplex iterations) in 0.28 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 777.967 806.908 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.779670646087e+02, best bound 7.779079178855e+02, gap 0.0076%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:55 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4043d94b
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.637007e+02, 92 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  363.70075    0   14          -  363.70075      -     -    0s
+     0     0  450.32351    0   33          -  450.32351      -     -    0s
+     0     0  451.09419    0   34          -  451.09419      -     -    0s
+     0     0  451.20327    0   35          -  451.20327      -     -    0s
+     0     0  470.18596    0   27          -  470.18596      -     -    0s
+     0     0  470.52219    0   27          -  470.52219      -     -    0s
+H    0     0                     806.9075458  470.52219  41.7%     -    0s
+H    0     0                     777.9670646  470.52219  39.5%     -    0s
+     0     0  777.90792    0   36  777.96706  777.90792  0.01%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 15
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (215 simplex iterations) in 0.29 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 777.967 806.908 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.779670646087e+02, best bound 7.779079178855e+02, gap 0.0076%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:55 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe45ea3f7
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.682655e+02, 91 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  368.26551    0   14          -  368.26551      -     -    0s
+     0     0  452.34768    0   31          -  452.34768      -     -    0s
+H    0     0                     801.7131035  452.34768  43.6%     -    0s
+     0     0  453.16816    0   32  801.71310  453.16816  43.5%     -    0s
+     0     0  453.94500    0   34  801.71310  453.94500  43.4%     -    0s
+     0     0  453.95325    0   34  801.71310  453.95325  43.4%     -    0s
+H    0     0                     783.7444243  453.95325  42.1%     -    0s
+     0     0  477.23219    0   28  783.74442  477.23219  39.1%     -    0s
+     0     0  526.97556    0   27  783.74442  526.97556  32.8%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 12
+  StrongCG: 1
+  Flow cover: 11
+  Inf proof: 1
+  Zero half: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (155 simplex iterations) in 0.24 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 783.744 801.713 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.837444243008e+02, best bound 7.837444243008e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:55 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe45ea3f7
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.682655e+02, 91 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  368.26551    0   14          -  368.26551      -     -    0s
+     0     0  452.34768    0   31          -  452.34768      -     -    0s
+H    0     0                     801.7131035  452.34768  43.6%     -    0s
+     0     0  453.16816    0   32  801.71310  453.16816  43.5%     -    0s
+     0     0  453.94500    0   34  801.71310  453.94500  43.4%     -    0s
+     0     0  453.95325    0   34  801.71310  453.95325  43.4%     -    0s
+H    0     0                     783.7444243  453.95325  42.1%     -    0s
+     0     0  477.23219    0   28  783.74442  477.23219  39.1%     -    0s
+     0     0  526.97556    0   27  783.74442  526.97556  32.8%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 12
+  StrongCG: 1
+  Flow cover: 11
+  Inf proof: 1
+  Zero half: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (155 simplex iterations) in 0.26 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 783.744 801.713 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.837444243008e+02, best bound 7.837444243008e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:56 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x1c82be2d
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.708318e+02, 97 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  370.83179    0   14          -  370.83179      -     -    0s
+     0     0  456.33860    0   32          -  456.33860      -     -    0s
+     0     0  456.87817    0   32          -  456.87817      -     -    0s
+     0     0  457.34308    0   34          -  457.34308      -     -    0s
+     0     0  457.40081    0   34          -  457.40081      -     -    0s
+     0     0  481.44824    0   28          -  481.44824      -     -    0s
+     0     0  483.93940    0   27          -  483.93940      -     -    0s
+H    0     0                     810.5420431  600.96821  25.9%     -    0s
+     0     0  600.96821    0   33  810.54204  600.96821  25.9%     -    0s
+     0     0  600.96821    0   34  810.54204  600.96821  25.9%     -    0s
+H    0     0                     786.0498092  600.96821  23.5%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 18
+  StrongCG: 1
+  Flow cover: 10
+  Mod-K: 2
+  RLT: 2
+
+Explored 1 nodes (196 simplex iterations) in 0.34 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 786.05 810.542 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.860498091825e+02, best bound 7.860498091825e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:56 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x1c82be2d
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.708318e+02, 97 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  370.83179    0   14          -  370.83179      -     -    0s
+     0     0  456.33860    0   32          -  456.33860      -     -    0s
+     0     0  456.87817    0   32          -  456.87817      -     -    0s
+     0     0  457.34308    0   34          -  457.34308      -     -    0s
+     0     0  457.40081    0   34          -  457.40081      -     -    0s
+     0     0  481.44824    0   28          -  481.44824      -     -    0s
+     0     0  483.93940    0   27          -  483.93940      -     -    0s
+H    0     0                     810.5420431  600.96821  25.9%     -    0s
+     0     0  600.96821    0   33  810.54204  600.96821  25.9%     -    0s
+     0     0  600.96821    0   34  810.54204  600.96821  25.9%     -    0s
+H    0     0                     786.0498092  600.96821  23.5%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 18
+  StrongCG: 1
+  Flow cover: 10
+  Mod-K: 2
+  RLT: 2
+
+Explored 1 nodes (196 simplex iterations) in 0.36 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 786.05 810.542 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.860498091825e+02, best bound 7.860498091825e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:56 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xb1d83d9a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.842145e+02, 88 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  384.21451    0   14          -  384.21451      -     -    0s
+     0     0  469.65099    0   33          -  469.65099      -     -    0s
+     0     0  470.22421    0   35          -  470.22421      -     -    0s
+     0     0  486.63965    0   22          -  486.63965      -     -    0s
+     0     0  542.45753    0   30          -  542.45753      -     -    0s
+     0     0  542.45753    0   32          -  542.45753      -     -    0s
+H    0     0                     810.7857384  542.45753  33.1%     -    0s
+     0     0  702.51466    0   33  810.78574  702.51466  13.4%     -    0s
+     0     0  795.47507    0   35  810.78574  795.47507  1.89%     -    0s
+     0     0  810.78574    0   35  810.78574  810.78574  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 5
+  Flow cover: 7
+  Zero half: 2
+  Mod-K: 1
+  RLT: 4
+
+Explored 1 nodes (228 simplex iterations) in 0.32 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 810.786 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.107857384067e+02, best bound 8.107857384067e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:57 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xb1d83d9a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.842145e+02, 88 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  384.21451    0   14          -  384.21451      -     -    0s
+     0     0  469.65099    0   33          -  469.65099      -     -    0s
+     0     0  470.22421    0   35          -  470.22421      -     -    0s
+     0     0  486.63965    0   22          -  486.63965      -     -    0s
+     0     0  542.45753    0   30          -  542.45753      -     -    0s
+     0     0  542.45753    0   32          -  542.45753      -     -    0s
+H    0     0                     810.7857384  542.45753  33.1%     -    0s
+     0     0  702.51466    0   33  810.78574  702.51466  13.4%     -    0s
+     0     0  795.47507    0   35  810.78574  795.47507  1.89%     -    0s
+     0     0  810.78574    0   35  810.78574  810.78574  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 5
+  Flow cover: 7
+  Zero half: 2
+  Mod-K: 1
+  RLT: 4
+
+Explored 1 nodes (228 simplex iterations) in 0.37 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 810.786 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.107857384067e+02, best bound 8.107857384067e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:57 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x70f0d930
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.971123e+02, 97 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  397.11228    0   14          -  397.11228      -     -    0s
+     0     0  478.42073    0   35          -  478.42073      -     -    0s
+H    0     0                     832.3498432  478.42073  42.5%     -    0s
+     0     0  479.32363    0   36  832.34984  479.32363  42.4%     -    0s
+H    0     0                     830.3533550  500.82678  39.7%     -    0s
+     0     0  564.53129    0   25  830.35336  564.53129  32.0%     -    0s
+     0     0  605.90750    0   27  830.35336  605.90750  27.0%     -    0s
+     0     0  613.74082    0   27  830.35336  613.74082  26.1%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 15
+  Flow cover: 7
+  Zero half: 6
+  RLT: 3
+
+Explored 1 nodes (170 simplex iterations) in 0.34 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 830.353 832.35 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.303533550333e+02, best bound 8.303533550333e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:58 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x70f0d930
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.971123e+02, 97 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  397.11228    0   14          -  397.11228      -     -    0s
+     0     0  478.42073    0   35          -  478.42073      -     -    0s
+H    0     0                     832.3498432  478.42073  42.5%     -    0s
+     0     0  479.32363    0   36  832.34984  479.32363  42.4%     -    0s
+H    0     0                     830.3533550  500.82678  39.7%     -    0s
+     0     0  564.53129    0   25  830.35336  564.53129  32.0%     -    0s
+     0     0  605.90750    0   27  830.35336  605.90750  27.0%     -    0s
+     0     0  613.74082    0   27  830.35336  613.74082  26.1%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 15
+  Flow cover: 7
+  Zero half: 6
+  RLT: 3
+
+Explored 1 nodes (170 simplex iterations) in 0.32 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 830.353 832.35 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.303533550333e+02, best bound 8.303533550333e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:58 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xf1905166
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.986538e+02, 96 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  398.65382    0   14          -  398.65382      -     -    0s
+     0     0  490.77730    0   34          -  490.77730      -     -    0s
+     0     0  494.24064    0   35          -  494.24064      -     -    0s
+     0     0  494.24064    0   37          -  494.24064      -     -    0s
+     0     0  522.78249    0   25          -  522.78249      -     -    0s
+H    0     0                     839.2646286  522.78249  37.7%     -    0s
+     0     0  535.94500    0   26  839.26463  535.94500  36.1%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 10
+  Flow cover: 9
+  Zero half: 3
+  Mod-K: 2
+  RLT: 2
+
+Explored 1 nodes (184 simplex iterations) in 0.24 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 839.265 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.392646286028e+02, best bound 8.392646286028e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:58 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xf1905166
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.986538e+02, 96 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  398.65382    0   14          -  398.65382      -     -    0s
+     0     0  490.77730    0   34          -  490.77730      -     -    0s
+     0     0  494.24064    0   35          -  494.24064      -     -    0s
+     0     0  494.24064    0   37          -  494.24064      -     -    0s
+     0     0  522.78249    0   25          -  522.78249      -     -    0s
+H    0     0                     839.2646286  522.78249  37.7%     -    0s
+     0     0  535.94500    0   26  839.26463  535.94500  36.1%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 10
+  Flow cover: 9
+  Zero half: 3
+  Mod-K: 2
+  RLT: 2
+
+Explored 1 nodes (184 simplex iterations) in 0.27 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 839.265 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.392646286028e+02, best bound 8.392646286028e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:59 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x8114104a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 8e+01]
+  Objective range  [5e+01, 8e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 65 rows and 87 columns
+Presolve time: 0.03s
+Presolved: 102 rows, 123 columns, 837 nonzeros
+Variable types: 0 continuous, 123 integer (68 binary)
+
+Root relaxation: objective 4.350949e+02, 75 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  435.09486    0   15          -  435.09486      -     -    0s
+     0     0  536.97961    0   35          -  536.97961      -     -    0s
+H    0     0                     904.9899649  536.97961  40.7%     -    0s
+     0     0  581.11910    0   43  904.98996  581.11910  35.8%     -    0s
+H    0     0                     895.3481251  581.11910  35.1%     -    0s
+     0     0  638.31868    0   40  895.34813  638.31868  28.7%     -    0s
+     0     0  643.87754    0   39  895.34813  643.87754  28.1%     -    0s
+     0     0  654.88473    0   39  895.34813  654.88473  26.9%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 5
+  Inf proof: 2
+  Zero half: 5
+  RLT: 4
+
+Explored 1 nodes (169 simplex iterations) in 0.33 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 895.348 904.99 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.953481251103e+02, best bound 8.953481251103e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:59 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x8114104a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 8e+01]
+  Objective range  [5e+01, 8e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 65 rows and 87 columns
+Presolve time: 0.03s
+Presolved: 102 rows, 123 columns, 837 nonzeros
+Variable types: 0 continuous, 123 integer (68 binary)
+
+Root relaxation: objective 4.350949e+02, 75 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  435.09486    0   15          -  435.09486      -     -    0s
+     0     0  536.97961    0   35          -  536.97961      -     -    0s
+H    0     0                     904.9899649  536.97961  40.7%     -    0s
+     0     0  581.11910    0   43  904.98996  581.11910  35.8%     -    0s
+H    0     0                     895.3481251  581.11910  35.1%     -    0s
+     0     0  638.31868    0   40  895.34813  638.31868  28.7%     -    0s
+     0     0  643.87754    0   39  895.34813  643.87754  28.1%     -    0s
+     0     0  654.88473    0   39  895.34813  654.88473  26.9%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 5
+  Inf proof: 2
+  Zero half: 5
+  RLT: 4
+
+Explored 1 nodes (169 simplex iterations) in 0.28 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 895.348 904.99 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.953481251103e+02, best bound 8.953481251103e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:55:59 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1373 nonzeros
+Model fingerprint: 0xa8e8bcab
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 85 rows and 116 columns
+Presolve time: 0.02s
+Presolved: 82 rows, 94 columns, 576 nonzeros
+Variable types: 0 continuous, 94 integer (52 binary)
+
+Root relaxation: objective 5.336761e+02, 38 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  533.67608    0   14          -  533.67608      -     -    0s
+     0     0  719.61078    0   26          -  719.61078      -     -    0s
+     0     0  724.50734    0   32          -  724.50734      -     -    0s
+     0     0  793.96586    0   27          -  793.96586      -     -    0s
+     0     0  942.50888    0   33          -  942.50888      -     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 13
+  StrongCG: 2
+  Flow cover: 6
+  Inf proof: 1
+  Zero half: 6
+  RLT: 2
+
+Explored 1 nodes (105 simplex iterations) in 0.18 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:56:00 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1373 nonzeros
+Model fingerprint: 0xa8e8bcab
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 85 rows and 116 columns
+Presolve time: 0.02s
+Presolved: 82 rows, 94 columns, 576 nonzeros
+Variable types: 0 continuous, 94 integer (52 binary)
+
+Root relaxation: objective 5.336761e+02, 38 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  533.67608    0   14          -  533.67608      -     -    0s
+     0     0  719.61078    0   26          -  719.61078      -     -    0s
+     0     0  724.50734    0   32          -  724.50734      -     -    0s
+     0     0  793.96586    0   27          -  793.96586      -     -    0s
+     0     0  942.50888    0   33          -  942.50888      -     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 13
+  StrongCG: 2
+  Flow cover: 6
+  Inf proof: 1
+  Zero half: 6
+  RLT: 2
+
+Explored 1 nodes (105 simplex iterations) in 0.23 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:56:00 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1375 nonzeros
+Model fingerprint: 0xe0890e7a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 140 rows and 194 columns
+Presolve time: 0.01s
+
+Explored 0 nodes (0 simplex iterations) in 0.01 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:56:00 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1375 nonzeros
+Model fingerprint: 0xe0890e7a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 140 rows and 194 columns
+Presolve time: 0.02s
+
+Explored 0 nodes (0 simplex iterations) in 0.02 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:56:00 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1374 nonzeros
+Model fingerprint: 0x58ebd7eb
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [1e+02, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 9 rows and 64 columns
+Presolve time: 0.00s
+
+Explored 0 nodes (0 simplex iterations) in 0.01 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:56:00 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1374 nonzeros
+Model fingerprint: 0x58ebd7eb
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [1e+02, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 9 rows and 64 columns
+Presolve time: 0.00s
+
+Explored 0 nodes (0 simplex iterations) in 0.00 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:56:00 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xa0e2e9a7
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.617329e+02, 91 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  361.73290    0   14          -  361.73290      -     -    0s
+     0     0  447.27037    0   33          -  447.27037      -     -    0s
+     0     0  448.07551    0   34          -  448.07551      -     -    0s
+     0     0  448.16295    0   35          -  448.16295      -     -    0s
+     0     0  466.35796    0   27          -  466.35796      -     -    0s
+     0     0  466.77263    0   27          -  466.77263      -     -    0s
+     0     0  467.10840    0   29          -  467.10840      -     -    0s
+     0     0  607.02634    0   34          -  607.02634      -     -    0s
+     0     0  615.77604    0   38          -  615.77604      -     -    0s
+     0     0  615.77604    0   37          -  615.77604      -     -    0s
+     0     0  615.77604    0   40          -  615.77604      -     -    0s
+     0     0  615.77604    0   28          -  615.77604      -     -    0s
+     0     0  615.77604    0   32          -  615.77604      -     -    0s
+H    0     0                     801.2877652  615.77604  23.2%     -    0s
+H    0     0                     775.4998652  615.77604  20.6%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 11
+  Flow cover: 13
+  GUB cover: 1
+  Inf proof: 1
+  Mod-K: 2
+  RLT: 3
+
+Explored 1 nodes (244 simplex iterations) in 0.56 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 775.5 801.288 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.754998651895e+02, best bound 7.754998651895e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:56:01 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xa0e2e9a7
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.617329e+02, 91 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  361.73290    0   14          -  361.73290      -     -    0s
+     0     0  447.27037    0   33          -  447.27037      -     -    0s
+     0     0  448.07551    0   34          -  448.07551      -     -    0s
+     0     0  448.16295    0   35          -  448.16295      -     -    0s
+     0     0  466.35796    0   27          -  466.35796      -     -    0s
+     0     0  466.77263    0   27          -  466.77263      -     -    0s
+     0     0  467.10840    0   29          -  467.10840      -     -    0s
+     0     0  607.02634    0   34          -  607.02634      -     -    0s
+     0     0  615.77604    0   38          -  615.77604      -     -    0s
+     0     0  615.77604    0   37          -  615.77604      -     -    0s
+     0     0  615.77604    0   40          -  615.77604      -     -    0s
+     0     0  615.77604    0   28          -  615.77604      -     -    0s
+     0     0  615.77604    0   32          -  615.77604      -     -    0s
+H    0     0                     801.2877652  615.77604  23.2%     -    0s
+H    0     0                     775.4998652  615.77604  20.6%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 11
+  Flow cover: 13
+  GUB cover: 1
+  Inf proof: 1
+  Mod-K: 2
+  RLT: 3
+
+Explored 1 nodes (244 simplex iterations) in 0.41 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 775.5 801.288 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.754998651895e+02, best bound 7.754998651895e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 15:56:01 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xdf042b5e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.643723e+02, 91 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  364.37228    0   14          -  364.37228      -     -    0s
+     0     0  449.00614    0   35          -  449.00614      -     -    0s
+     0     0  449.40547    0   35          -  449.40547      -     -    0s
+     0     0  471.36362    0   22          -  471.36362      -     -    0s
+     0     0  477.86244    0   21          -  477.86244      -     -    0s
+     0     0  540.50725    0   27          -  540.50725      -     -    0s
+     0     0  557.49898    0   37          -  557.49898      -     -    0s
+H    0     0                     778.2555880  557.49898  28.4%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 16
+  Flow cover: 11
+  Inf proof: 1
+  Zero half: 1
+  RLT: 5
+
+Explored 1 nodes (221 simplex iterations) in 0.51 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 778.256 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.782555880190e+02, best bound 7.782555880190e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:15 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x9f27c4df
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.612127e+02, 91 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  361.21268    0   14          -  361.21268      -     -    0s
+     0     0  445.70080    0   30          -  445.70080      -     -    0s
+     0     0  446.20384    0   20          -  446.20384      -     -    0s
+     0     0  446.95771    0   35          -  446.95771      -     -    0s
+     0     0  467.98069    0   28          -  467.98069      -     -    0s
+     0     0  468.22258    0   29          -  468.22258      -     -    0s
+     0     0  618.26001    0   33          -  618.26001      -     -    0s
+     0     0  618.26001    0   33          -  618.26001      -     -    0s
+     0     0  684.01168    0   36          -  684.01168      -     -    0s
+     0     0  687.96070    0   36          -  687.96070      -     -    0s
+H    0     0                     777.4852859  687.96070  11.5%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 11
+  StrongCG: 2
+  Flow cover: 10
+  Zero half: 1
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (212 simplex iterations) in 0.46 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 777.485 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.774852859196e+02, best bound 7.774852859196e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:16 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x9f27c4df
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.612127e+02, 91 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  361.21268    0   14          -  361.21268      -     -    0s
+     0     0  445.70080    0   30          -  445.70080      -     -    0s
+     0     0  446.20384    0   20          -  446.20384      -     -    0s
+     0     0  446.95771    0   35          -  446.95771      -     -    0s
+     0     0  467.98069    0   28          -  467.98069      -     -    0s
+     0     0  468.22258    0   29          -  468.22258      -     -    0s
+     0     0  618.26001    0   33          -  618.26001      -     -    0s
+     0     0  618.26001    0   33          -  618.26001      -     -    0s
+     0     0  684.01168    0   36          -  684.01168      -     -    0s
+     0     0  687.96070    0   36          -  687.96070      -     -    0s
+H    0     0                     777.4852859  687.96070  11.5%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 11
+  StrongCG: 2
+  Flow cover: 10
+  Zero half: 1
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (212 simplex iterations) in 0.50 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 777.485 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.774852859196e+02, best bound 7.774852859196e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:17 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xa1887ec7
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.06s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.631469e+02, 86 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  363.14695    0   14          -  363.14695      -     -    0s
+     0     0  447.74726    0   34          -  447.74726      -     -    0s
+     0     0  448.74355    0   34          -  448.74355      -     -    0s
+     0     0  448.99477    0   34          -  448.99477      -     -    0s
+     0     0  467.28964    0   25          -  467.28964      -     -    0s
+     0     0  467.31618    0   25          -  467.31618      -     -    0s
+     0     0  589.70129    0   30          -  589.70129      -     -    0s
+     0     0  594.55652    0   32          -  594.55652      -     -    0s
+     0     0  594.55652    0   31          -  594.55652      -     -    0s
+     0     0  616.90013    0   31          -  616.90013      -     -    0s
+     0     0  616.90013    0   33          -  616.90013      -     -    0s
+H    0     0                     985.6827395  616.90013  37.4%     -    0s
+H    0     0                     777.0967571  616.90013  20.6%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 16
+  StrongCG: 1
+  Flow cover: 5
+  Zero half: 2
+  Mod-K: 2
+  RLT: 2
+
+Explored 1 nodes (211 simplex iterations) in 0.43 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 777.097 985.683 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.770967571098e+02, best bound 7.770967571098e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:17 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xa1887ec7
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.631469e+02, 86 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  363.14695    0   14          -  363.14695      -     -    0s
+     0     0  447.74726    0   34          -  447.74726      -     -    0s
+     0     0  448.74355    0   34          -  448.74355      -     -    0s
+     0     0  448.99477    0   34          -  448.99477      -     -    0s
+     0     0  467.28964    0   25          -  467.28964      -     -    0s
+     0     0  467.31618    0   25          -  467.31618      -     -    0s
+     0     0  589.70129    0   30          -  589.70129      -     -    0s
+     0     0  594.55652    0   32          -  594.55652      -     -    0s
+     0     0  594.55652    0   31          -  594.55652      -     -    0s
+     0     0  616.90013    0   31          -  616.90013      -     -    0s
+     0     0  616.90013    0   33          -  616.90013      -     -    0s
+H    0     0                     985.6827395  616.90013  37.4%     -    0s
+H    0     0                     777.0967571  616.90013  20.6%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 16
+  StrongCG: 1
+  Flow cover: 5
+  Zero half: 2
+  Mod-K: 2
+  RLT: 2
+
+Explored 1 nodes (211 simplex iterations) in 0.40 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 777.097 985.683 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.770967571098e+02, best bound 7.770967571098e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:18 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x8264b64e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.669926e+02, 91 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  366.99259    0   14          -  366.99259      -     -    0s
+     0     0  454.81034    0   26          -  454.81034      -     -    0s
+     0     0  455.32449    0   20          -  455.32449      -     -    0s
+     0     0  455.86124    0   35          -  455.86124      -     -    0s
+     0     0  476.81381    0   26          -  476.81381      -     -    0s
+     0     0  480.81179    0   26          -  480.81179      -     -    0s
+     0     0  482.50283    0   29          -  482.50283      -     -    0s
+     0     0  622.05385    0   41          -  622.05385      -     -    0s
+     0     0  622.05385    0   41          -  622.05385      -     -    0s
+     0     0  622.05385    0   30          -  622.05385      -     -    0s
+H    0     0                     814.1555193  622.05385  23.6%     -    0s
+H    0     0                     782.4647174  622.05385  20.5%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 15
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (256 simplex iterations) in 0.43 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 782.465 814.156 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.824647173694e+02, best bound 7.824647173694e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:18 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x8264b64e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.669926e+02, 91 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  366.99259    0   14          -  366.99259      -     -    0s
+     0     0  454.81034    0   26          -  454.81034      -     -    0s
+     0     0  455.32449    0   20          -  455.32449      -     -    0s
+     0     0  455.86124    0   35          -  455.86124      -     -    0s
+     0     0  476.81381    0   26          -  476.81381      -     -    0s
+     0     0  480.81179    0   26          -  480.81179      -     -    0s
+     0     0  482.50283    0   29          -  482.50283      -     -    0s
+     0     0  622.05385    0   41          -  622.05385      -     -    0s
+     0     0  622.05385    0   41          -  622.05385      -     -    0s
+     0     0  622.05385    0   30          -  622.05385      -     -    0s
+H    0     0                     814.1555193  622.05385  23.6%     -    0s
+H    0     0                     782.4647174  622.05385  20.5%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 15
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (256 simplex iterations) in 0.44 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 782.465 814.156 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.824647173694e+02, best bound 7.824647173694e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:19 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe9a197c9
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.735041e+02, 97 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  373.50407    0   14          -  373.50407      -     -    0s
+     0     0  457.64418    0   29          -  457.64418      -     -    0s
+     0     0  458.43041    0   33          -  458.43041      -     -    0s
+     0     0  459.32719    0   34          -  459.32719      -     -    0s
+     0     0  459.37579    0   34          -  459.37579      -     -    0s
+H    0     0                     790.8262513  459.37579  41.9%     -    0s
+     0     0  495.37323    0   27  790.82625  495.37323  37.4%     -    0s
+     0     0  499.12085    0   28  790.82625  499.12085  36.9%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 16
+  Flow cover: 12
+  Inf proof: 2
+  Zero half: 3
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (162 simplex iterations) in 0.33 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 790.826 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.908262512524e+02, best bound 7.908262512524e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:19 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe9a197c9
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.735041e+02, 97 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  373.50407    0   14          -  373.50407      -     -    0s
+     0     0  457.64418    0   29          -  457.64418      -     -    0s
+     0     0  458.43041    0   33          -  458.43041      -     -    0s
+     0     0  459.32719    0   34          -  459.32719      -     -    0s
+     0     0  459.37579    0   34          -  459.37579      -     -    0s
+H    0     0                     790.8262513  459.37579  41.9%     -    0s
+     0     0  495.37323    0   27  790.82625  495.37323  37.4%     -    0s
+     0     0  499.12085    0   28  790.82625  499.12085  36.9%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 16
+  Flow cover: 12
+  Inf proof: 2
+  Zero half: 3
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (162 simplex iterations) in 0.28 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 790.826 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.908262512524e+02, best bound 7.908262512524e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:19 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x7f8d7a00
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.769709e+02, 94 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  376.97085    0   14          -  376.97085      -     -    0s
+     0     0  462.98331    0   30          -  462.98331      -     -    0s
+     0     0  463.49240    0   32          -  463.49240      -     -    0s
+     0     0  463.92382    0   34          -  463.92382      -     -    0s
+     0     0  489.82122    0   31          -  489.82122      -     -    0s
+     0     0  491.01412    0   30          -  491.01412      -     -    0s
+H    0     0                     819.0298409  491.01412  40.0%     -    0s
+H    0     0                     793.8472735  491.01412  38.1%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 15
+  StrongCG: 1
+  Flow cover: 11
+  Inf proof: 1
+  RLT: 3
+
+Explored 1 nodes (177 simplex iterations) in 0.37 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 793.847 819.03 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.938472734776e+02, best bound 7.938472734776e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:20 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x7f8d7a00
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.769709e+02, 94 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  376.97085    0   14          -  376.97085      -     -    0s
+     0     0  462.98331    0   30          -  462.98331      -     -    0s
+     0     0  463.49240    0   32          -  463.49240      -     -    0s
+     0     0  463.92382    0   34          -  463.92382      -     -    0s
+     0     0  489.82122    0   31          -  489.82122      -     -    0s
+     0     0  491.01412    0   30          -  491.01412      -     -    0s
+H    0     0                     819.0298409  491.01412  40.0%     -    0s
+H    0     0                     793.8472735  491.01412  38.1%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 15
+  StrongCG: 1
+  Flow cover: 11
+  Inf proof: 1
+  RLT: 3
+
+Explored 1 nodes (177 simplex iterations) in 0.30 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 793.847 819.03 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.938472734776e+02, best bound 7.938472734776e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:20 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x47f74b14
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.965968e+02, 87 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  396.59685    0   14          -  396.59685      -     -    0s
+     0     0  480.80107    0   33          -  480.80107      -     -    0s
+H    0     0                     829.9074799  480.80107  42.1%     -    0s
+     0     0  481.39663    0   35  829.90748  481.39663  42.0%     -    0s
+     0     0  553.91629    0   25  829.90748  553.91629  33.3%     -    0s
+     0     0  593.47073    0   29  829.90748  593.47073  28.5%     -    0s
+     0     0  597.95780    0   33  829.90748  597.95780  27.9%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 9
+  Inf proof: 2
+  Zero half: 5
+  RLT: 2
+
+Explored 1 nodes (175 simplex iterations) in 0.33 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 829.907 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.299074798515e+02, best bound 8.299074798515e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:20 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x47f74b14
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.965968e+02, 87 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  396.59685    0   14          -  396.59685      -     -    0s
+     0     0  480.80107    0   33          -  480.80107      -     -    0s
+H    0     0                     829.9074799  480.80107  42.1%     -    0s
+     0     0  481.39663    0   35  829.90748  481.39663  42.0%     -    0s
+     0     0  553.91629    0   25  829.90748  553.91629  33.3%     -    0s
+     0     0  593.47073    0   29  829.90748  593.47073  28.5%     -    0s
+     0     0  597.95780    0   33  829.90748  597.95780  27.9%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 9
+  Inf proof: 2
+  Zero half: 5
+  RLT: 2
+
+Explored 1 nodes (175 simplex iterations) in 0.34 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 829.907 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.299074798515e+02, best bound 8.299074798515e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:21 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x715e9916
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 4.191180e+02, 88 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  419.11800    0   14          -  419.11800      -     -    0s
+     0     0  493.86511    0   31          -  493.86511      -     -    0s
+     0     0  494.75310    0   33          -  494.75310      -     -    0s
+     0     0  495.77935    0   35          -  495.77935      -     -    0s
+     0     0  517.15766    0   26          -  517.15766      -     -    0s
+H    0     0                     866.9599398  517.15766  40.3%     -    0s
+     0     0  525.83651    0   23  866.95994  525.83651  39.3%     -    0s
+     0     0  525.83651    0   23  866.95994  525.83651  39.3%     -    0s
+H    0     0                     847.3391449  525.83651  37.9%     -    0s
+     0     0  707.64888    0   36  847.33914  707.64888  16.5%     -    0s
+     0     0  757.55261    0   35  847.33914  757.55261  10.6%     -    0s
+     0     0  765.95177    0   35  847.33914  765.95177  9.61%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 17
+  Flow cover: 7
+  Inf proof: 1
+  Zero half: 7
+  RLT: 4
+
+Explored 1 nodes (175 simplex iterations) in 0.39 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 847.339 866.96 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.473391448781e+02, best bound 8.473391448781e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:21 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x715e9916
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 4.191180e+02, 88 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  419.11800    0   14          -  419.11800      -     -    0s
+     0     0  493.86511    0   31          -  493.86511      -     -    0s
+     0     0  494.75310    0   33          -  494.75310      -     -    0s
+     0     0  495.77935    0   35          -  495.77935      -     -    0s
+     0     0  517.15766    0   26          -  517.15766      -     -    0s
+H    0     0                     866.9599398  517.15766  40.3%     -    0s
+     0     0  525.83651    0   23  866.95994  525.83651  39.3%     -    0s
+     0     0  525.83651    0   23  866.95994  525.83651  39.3%     -    0s
+H    0     0                     847.3391449  525.83651  37.9%     -    0s
+     0     0  707.64888    0   36  847.33914  707.64888  16.5%     -    0s
+     0     0  757.55261    0   35  847.33914  757.55261  10.6%     -    0s
+     0     0  765.95177    0   35  847.33914  765.95177  9.61%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 17
+  Flow cover: 7
+  Inf proof: 1
+  Zero half: 7
+  RLT: 4
+
+Explored 1 nodes (175 simplex iterations) in 0.37 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 847.339 866.96 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.473391448781e+02, best bound 8.473391448781e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:22 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xa068249a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+Found heuristic solution: objective 922.7580884
+
+Root relaxation: objective 4.196677e+02, 80 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  419.66767    0   14  922.75809  419.66767  54.5%     -    0s
+     0     0  516.38146    0   30  922.75809  516.38146  44.0%     -    0s
+     0     0  518.10740    0   36  922.75809  518.10740  43.9%     -    0s
+     0     0  584.91355    0   23  922.75809  584.91355  36.6%     -    0s
+     0     0  632.02275    0   33  922.75809  632.02275  31.5%     -    0s
+     0     0  633.13855    0   34  922.75809  633.13855  31.4%     -    0s
+H    0     0                     878.2952021  633.13855  27.9%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 10
+  Flow cover: 10
+  Inf proof: 1
+  Zero half: 4
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (182 simplex iterations) in 0.34 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 878.295 922.758 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.782952021047e+02, best bound 8.782952021047e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:22 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xa068249a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+Found heuristic solution: objective 922.7580884
+
+Root relaxation: objective 4.196677e+02, 80 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  419.66767    0   14  922.75809  419.66767  54.5%     -    0s
+     0     0  516.38146    0   30  922.75809  516.38146  44.0%     -    0s
+     0     0  518.10740    0   36  922.75809  518.10740  43.9%     -    0s
+     0     0  584.91355    0   23  922.75809  584.91355  36.6%     -    0s
+     0     0  632.02275    0   33  922.75809  632.02275  31.5%     -    0s
+     0     0  633.13855    0   34  922.75809  633.13855  31.4%     -    0s
+H    0     0                     878.2952021  633.13855  27.9%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 10
+  Flow cover: 10
+  Inf proof: 1
+  Zero half: 4
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (182 simplex iterations) in 0.31 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 878.295 922.758 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 8.782952021047e+02, best bound 8.782952021047e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:22 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x410a323e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 1e+05]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 825 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 5.058364e+02, 74 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  505.83641    0   15          -  505.83641      -     -    0s
+     0     0  599.48211    0   36          -  599.48211      -     -    0s
+     0     0  602.91370    0   34          -  602.91370      -     -    0s
+     0     0  628.13414    0   39          -  628.13414      -     -    0s
+     0     0  632.95363    0   39          -  632.95363      -     -    0s
+     0     0  633.17689    0   40          -  633.17689      -     -    0s
+H    0     0                     977.7633232  633.17689  35.2%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Clique: 1
+  MIR: 17
+  StrongCG: 2
+  Flow cover: 7
+  Zero half: 1
+  Mod-K: 1
+  RLT: 9
+
+Explored 1 nodes (151 simplex iterations) in 0.33 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 977.763 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 9.777633232288e+02, best bound 9.777633232288e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:23 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x410a323e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 1e+05]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 825 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 5.058364e+02, 74 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  505.83641    0   15          -  505.83641      -     -    0s
+     0     0  599.48211    0   36          -  599.48211      -     -    0s
+     0     0  602.91370    0   34          -  602.91370      -     -    0s
+     0     0  628.13414    0   39          -  628.13414      -     -    0s
+     0     0  632.95363    0   39          -  632.95363      -     -    0s
+     0     0  633.17689    0   40          -  633.17689      -     -    0s
+H    0     0                     977.7633232  633.17689  35.2%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Clique: 1
+  MIR: 17
+  StrongCG: 2
+  Flow cover: 7
+  Zero half: 1
+  Mod-K: 1
+  RLT: 9
+
+Explored 1 nodes (151 simplex iterations) in 0.34 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 977.763 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 9.777633232288e+02, best bound 9.777633232288e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:23 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1373 nonzeros
+Model fingerprint: 0xdc21f627
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 157 rows and 204 columns
+Presolve time: 0.06s
+
+Explored 0 nodes (0 simplex iterations) in 0.07 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:23 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1373 nonzeros
+Model fingerprint: 0xdc21f627
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 157 rows and 204 columns
+Presolve time: 0.02s
+
+Explored 0 nodes (0 simplex iterations) in 0.03 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:23 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1377 nonzeros
+Model fingerprint: 0x85610366
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 6 rows and 63 columns
+Presolve time: 0.00s
+
+Explored 0 nodes (0 simplex iterations) in 0.00 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:23 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1377 nonzeros
+Model fingerprint: 0x85610366
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [5e+01, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 6 rows and 63 columns
+Presolve time: 0.00s
+
+Explored 0 nodes (0 simplex iterations) in 0.00 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:24 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x270a20b2
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.612904e+02, 91 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  361.29040    0   14          -  361.29040      -     -    0s
+     0     0  446.45478    0   34          -  446.45478      -     -    0s
+H    0     0                     774.8181295  446.45478  42.4%     -    0s
+     0     0  446.63812    0   35  774.81813  446.63812  42.4%     -    0s
+     0     0  468.00635    0   23  774.81813  468.00635  39.6%     -    0s
+     0     0  473.12403    0   21  774.81813  473.12403  38.9%     -    0s
+     0     0  598.34280    0   29  774.81813  598.34280  22.8%     -    0s
+     0     0  598.34280    0   31  774.81813  598.34280  22.8%     -    0s
+     0     0  598.34280    0   33  774.81813  598.34280  22.8%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 14
+  Flow cover: 13
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (211 simplex iterations) in 0.53 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 774.818 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.748181294994e+02, best bound 7.747713995505e+02, gap 0.0060%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:24 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x270a20b2
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.612904e+02, 91 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  361.29040    0   14          -  361.29040      -     -    0s
+     0     0  446.45478    0   34          -  446.45478      -     -    0s
+H    0     0                     774.8181295  446.45478  42.4%     -    0s
+     0     0  446.63812    0   35  774.81813  446.63812  42.4%     -    0s
+     0     0  468.00635    0   23  774.81813  468.00635  39.6%     -    0s
+     0     0  473.12403    0   21  774.81813  473.12403  38.9%     -    0s
+     0     0  598.34280    0   29  774.81813  598.34280  22.8%     -    0s
+     0     0  598.34280    0   31  774.81813  598.34280  22.8%     -    0s
+     0     0  598.34280    0   33  774.81813  598.34280  22.8%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 14
+  Flow cover: 13
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (211 simplex iterations) in 0.47 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 774.818 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.748181294994e+02, best bound 7.747713995505e+02, gap 0.0060%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:25 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4043d94b
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.637007e+02, 92 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  363.70075    0   14          -  363.70075      -     -    0s
+     0     0  450.32351    0   33          -  450.32351      -     -    0s
+     0     0  451.09419    0   34          -  451.09419      -     -    0s
+     0     0  451.20327    0   35          -  451.20327      -     -    0s
+     0     0  470.18596    0   27          -  470.18596      -     -    0s
+     0     0  470.52219    0   27          -  470.52219      -     -    0s
+H    0     0                     806.9075458  470.52219  41.7%     -    0s
+H    0     0                     777.9670646  470.52219  39.5%     -    0s
+     0     0  777.90792    0   36  777.96706  777.90792  0.01%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 15
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (215 simplex iterations) in 0.33 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 777.967 806.908 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.779670646087e+02, best bound 7.779079178855e+02, gap 0.0076%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:17:25 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4043d94b
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [5e+01, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 851 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.637007e+02, 92 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  363.70075    0   14          -  363.70075      -     -    0s
+     0     0  450.32351    0   33          -  450.32351      -     -    0s
+     0     0  451.09419    0   34          -  451.09419      -     -    0s
+     0     0  451.20327    0   35          -  451.20327      -     -    0s
+     0     0  470.18596    0   27          -  470.18596      -     -    0s
+     0     0  470.52219    0   27          -  470.52219      -     -    0s
+H    0     0                     806.9075458  470.52219  41.7%     -    0s
+H    0     0                     777.9670646  470.52219  39.5%     -    0s
+     0     0  777.90792    0   36  777.96706  777.90792  0.01%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 15
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (215 simplex iterations) in 0.37 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 777.967 806.908 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.779670646087e+02, best bound 7.779079178855e+02, gap 0.0076%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:24:11 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x6a8fdea3
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.267558e+02, 63 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  326.75580    0   20          -  326.75580      -     -    0s
+     0     0  350.50720    0   13          -  350.50720      -     -    0s
+H    0     0                     588.3963919  357.40053  39.3%     -    0s
+     0     0  409.28479    0   24  588.39639  409.28479  30.4%     -    0s
+     0     0  431.12383    0   35  588.39639  431.12383  26.7%     -    0s
+
+Cutting planes:
+  MIR: 14
+  StrongCG: 3
+  Flow cover: 11
+  Inf proof: 3
+  Mod-K: 4
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.29 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 588.396 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.883963918989e+02, best bound 5.883963918989e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:24:12 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x6a8fdea3
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.267558e+02, 63 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  326.75580    0   20          -  326.75580      -     -    0s
+     0     0  350.50720    0   13          -  350.50720      -     -    0s
+H    0     0                     588.3963919  357.40053  39.3%     -    0s
+     0     0  409.28479    0   24  588.39639  409.28479  30.4%     -    0s
+     0     0  431.12383    0   35  588.39639  431.12383  26.7%     -    0s
+
+Cutting planes:
+  MIR: 14
+  StrongCG: 3
+  Flow cover: 11
+  Inf proof: 3
+  Mod-K: 4
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.37 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 588.396 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.883963918989e+02, best bound 5.883963918989e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:24:12 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x21caf129
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.277408e+02, 62 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  327.74082    0   15          -  327.74082      -     -    0s
+H    0     0                     643.0999555  327.74082  49.0%     -    0s
+     0     0  351.66983    0    7  643.09996  351.66983  45.3%     -    0s
+     0     0  571.84537    0   30  643.09996  571.84537  11.1%     -    0s
+H    0     0                     587.6952214  571.84537  2.70%     -    0s
+     0     0  584.05922    0   30  587.69522  584.05922  0.62%     -    0s
+     0     0  587.69522    0   32  587.69522  587.69522  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 1
+  StrongCG: 1
+  Flow cover: 3
+  RLT: 2
+
+Explored 1 nodes (131 simplex iterations) in 0.23 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 587.695 643.1 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.876952213579e+02, best bound 5.876952213579e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:24:13 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x21caf129
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.277408e+02, 62 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  327.74082    0   15          -  327.74082      -     -    0s
+H    0     0                     643.0999555  327.74082  49.0%     -    0s
+     0     0  351.66983    0    7  643.09996  351.66983  45.3%     -    0s
+     0     0  571.84537    0   30  643.09996  571.84537  11.1%     -    0s
+H    0     0                     587.6952214  571.84537  2.70%     -    0s
+     0     0  584.05922    0   30  587.69522  584.05922  0.62%     -    0s
+     0     0  587.69522    0   32  587.69522  587.69522  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 1
+  StrongCG: 1
+  Flow cover: 3
+  RLT: 2
+
+Explored 1 nodes (131 simplex iterations) in 0.19 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 587.695 643.1 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.876952213579e+02, best bound 5.876952213579e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:24:13 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x14e3ead5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.328173e+02, 61 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  332.81734    0   20          -  332.81734      -     -    0s
+     0     0  358.79167    0   13          -  358.79167      -     -    0s
+H    0     0                     595.0129880  359.89164  39.5%     -    0s
+     0     0  415.67609    0   24  595.01299  415.67609  30.1%     -    0s
+     0     0  538.35384    0   35  595.01299  538.35384  9.52%     -    0s
+
+Cutting planes:
+  MIR: 15
+  StrongCG: 3
+  Flow cover: 8
+  Inf proof: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (142 simplex iterations) in 0.28 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 595.013 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.950129879898e+02, best bound 5.950129879898e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:28:24 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x6a8fdea3
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.267558e+02, 63 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  326.75580    0   20          -  326.75580      -     -    0s
+     0     0  350.50720    0   13          -  350.50720      -     -    0s
+H    0     0                     588.3963919  357.40053  39.3%     -    0s
+     0     0  409.28479    0   24  588.39639  409.28479  30.4%     -    0s
+     0     0  431.12383    0   35  588.39639  431.12383  26.7%     -    0s
+
+Cutting planes:
+  MIR: 14
+  StrongCG: 3
+  Flow cover: 11
+  Inf proof: 3
+  Mod-K: 4
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.30 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 588.396 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.883963918989e+02, best bound 5.883963918989e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:28:25 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x6a8fdea3
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.267558e+02, 63 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  326.75580    0   20          -  326.75580      -     -    0s
+     0     0  350.50720    0   13          -  350.50720      -     -    0s
+H    0     0                     588.3963919  357.40053  39.3%     -    0s
+     0     0  409.28479    0   24  588.39639  409.28479  30.4%     -    0s
+     0     0  431.12383    0   35  588.39639  431.12383  26.7%     -    0s
+
+Cutting planes:
+  MIR: 14
+  StrongCG: 3
+  Flow cover: 11
+  Inf proof: 3
+  Mod-K: 4
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.30 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 588.396 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.883963918989e+02, best bound 5.883963918989e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:28:25 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x21caf129
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.277408e+02, 62 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  327.74082    0   15          -  327.74082      -     -    0s
+H    0     0                     643.0999555  327.74082  49.0%     -    0s
+     0     0  351.66983    0    7  643.09996  351.66983  45.3%     -    0s
+     0     0  571.84537    0   30  643.09996  571.84537  11.1%     -    0s
+H    0     0                     587.6952214  571.84537  2.70%     -    0s
+     0     0  584.05922    0   30  587.69522  584.05922  0.62%     -    0s
+     0     0  587.69522    0   32  587.69522  587.69522  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 1
+  StrongCG: 1
+  Flow cover: 3
+  RLT: 2
+
+Explored 1 nodes (131 simplex iterations) in 0.33 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 587.695 643.1 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.876952213579e+02, best bound 5.876952213579e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:28:26 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x21caf129
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.277408e+02, 62 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  327.74082    0   15          -  327.74082      -     -    0s
+H    0     0                     643.0999555  327.74082  49.0%     -    0s
+     0     0  351.66983    0    7  643.09996  351.66983  45.3%     -    0s
+     0     0  571.84537    0   30  643.09996  571.84537  11.1%     -    0s
+H    0     0                     587.6952214  571.84537  2.70%     -    0s
+     0     0  584.05922    0   30  587.69522  584.05922  0.62%     -    0s
+     0     0  587.69522    0   32  587.69522  587.69522  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 1
+  StrongCG: 1
+  Flow cover: 3
+  RLT: 2
+
+Explored 1 nodes (131 simplex iterations) in 0.21 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 587.695 643.1 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.876952213579e+02, best bound 5.876952213579e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:28:26 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x14e3ead5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.328173e+02, 61 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  332.81734    0   20          -  332.81734      -     -    0s
+     0     0  358.79167    0   13          -  358.79167      -     -    0s
+H    0     0                     595.0129880  359.89164  39.5%     -    0s
+     0     0  415.67609    0   24  595.01299  415.67609  30.1%     -    0s
+     0     0  538.35384    0   35  595.01299  538.35384  9.52%     -    0s
+
+Cutting planes:
+  MIR: 15
+  StrongCG: 3
+  Flow cover: 8
+  Inf proof: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (142 simplex iterations) in 0.28 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 595.013 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.950129879898e+02, best bound 5.950129879898e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:28:27 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x14e3ead5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.328173e+02, 61 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  332.81734    0   20          -  332.81734      -     -    0s
+     0     0  358.79167    0   13          -  358.79167      -     -    0s
+H    0     0                     595.0129880  359.89164  39.5%     -    0s
+     0     0  415.67609    0   24  595.01299  415.67609  30.1%     -    0s
+     0     0  538.35384    0   35  595.01299  538.35384  9.52%     -    0s
+
+Cutting planes:
+  MIR: 15
+  StrongCG: 3
+  Flow cover: 8
+  Inf proof: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (142 simplex iterations) in 0.29 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 595.013 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.950129879898e+02, best bound 5.950129879898e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:07 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x6a8fdea3
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.267558e+02, 63 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  326.75580    0   20          -  326.75580      -     -    0s
+     0     0  350.50720    0   13          -  350.50720      -     -    0s
+H    0     0                     588.3963919  357.40053  39.3%     -    0s
+     0     0  409.28479    0   24  588.39639  409.28479  30.4%     -    0s
+     0     0  431.12383    0   35  588.39639  431.12383  26.7%     -    0s
+
+Cutting planes:
+  MIR: 14
+  StrongCG: 3
+  Flow cover: 11
+  Inf proof: 3
+  Mod-K: 4
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.27 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 588.396 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.883963918989e+02, best bound 5.883963918989e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:08 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x6a8fdea3
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.267558e+02, 63 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  326.75580    0   20          -  326.75580      -     -    0s
+     0     0  350.50720    0   13          -  350.50720      -     -    0s
+H    0     0                     588.3963919  357.40053  39.3%     -    0s
+     0     0  409.28479    0   24  588.39639  409.28479  30.4%     -    0s
+     0     0  431.12383    0   35  588.39639  431.12383  26.7%     -    0s
+
+Cutting planes:
+  MIR: 14
+  StrongCG: 3
+  Flow cover: 11
+  Inf proof: 3
+  Mod-K: 4
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.35 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 588.396 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.883963918989e+02, best bound 5.883963918989e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:08 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x21caf129
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.277408e+02, 62 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  327.74082    0   15          -  327.74082      -     -    0s
+H    0     0                     643.0999555  327.74082  49.0%     -    0s
+     0     0  351.66983    0    7  643.09996  351.66983  45.3%     -    0s
+     0     0  571.84537    0   30  643.09996  571.84537  11.1%     -    0s
+H    0     0                     587.6952214  571.84537  2.70%     -    0s
+     0     0  584.05922    0   30  587.69522  584.05922  0.62%     -    0s
+     0     0  587.69522    0   32  587.69522  587.69522  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 1
+  StrongCG: 1
+  Flow cover: 3
+  RLT: 2
+
+Explored 1 nodes (131 simplex iterations) in 0.20 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 587.695 643.1 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.876952213579e+02, best bound 5.876952213579e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:08 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x21caf129
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.277408e+02, 62 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  327.74082    0   15          -  327.74082      -     -    0s
+H    0     0                     643.0999555  327.74082  49.0%     -    0s
+     0     0  351.66983    0    7  643.09996  351.66983  45.3%     -    0s
+     0     0  571.84537    0   30  643.09996  571.84537  11.1%     -    0s
+H    0     0                     587.6952214  571.84537  2.70%     -    0s
+     0     0  584.05922    0   30  587.69522  584.05922  0.62%     -    0s
+     0     0  587.69522    0   32  587.69522  587.69522  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 1
+  StrongCG: 1
+  Flow cover: 3
+  RLT: 2
+
+Explored 1 nodes (131 simplex iterations) in 0.19 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 587.695 643.1 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.876952213579e+02, best bound 5.876952213579e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:09 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x14e3ead5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.328173e+02, 61 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  332.81734    0   20          -  332.81734      -     -    0s
+     0     0  358.79167    0   13          -  358.79167      -     -    0s
+H    0     0                     595.0129880  359.89164  39.5%     -    0s
+     0     0  415.67609    0   24  595.01299  415.67609  30.1%     -    0s
+     0     0  538.35384    0   35  595.01299  538.35384  9.52%     -    0s
+
+Cutting planes:
+  MIR: 15
+  StrongCG: 3
+  Flow cover: 8
+  Inf proof: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (142 simplex iterations) in 0.23 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 595.013 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.950129879898e+02, best bound 5.950129879898e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:09 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x14e3ead5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.328173e+02, 61 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  332.81734    0   20          -  332.81734      -     -    0s
+     0     0  358.79167    0   13          -  358.79167      -     -    0s
+H    0     0                     595.0129880  359.89164  39.5%     -    0s
+     0     0  415.67609    0   24  595.01299  415.67609  30.1%     -    0s
+     0     0  538.35384    0   35  595.01299  538.35384  9.52%     -    0s
+
+Cutting planes:
+  MIR: 15
+  StrongCG: 3
+  Flow cover: 8
+  Inf proof: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (142 simplex iterations) in 0.23 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 595.013 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.950129879898e+02, best bound 5.950129879898e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:09 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0xcd9269e8
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.373285e+02, 61 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  337.32848    0   20          -  337.32848      -     -    0s
+     0     0  365.24353    0   13          -  365.24353      -     -    0s
+H    0     0                     976.2251107  365.24353  62.6%     -    0s
+     0     0  577.99599    0   32  976.22511  577.99599  40.8%     -    0s
+     0     0  601.24891    0   34  976.22511  601.24891  38.4%     -    0s
+H    0     0                     609.6670876  601.24891  1.38%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Cover: 1
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 7
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.26 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 609.667 976.225 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.096670875788e+02, best bound 6.096670875788e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:10 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0xcd9269e8
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.373285e+02, 61 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  337.32848    0   20          -  337.32848      -     -    0s
+     0     0  365.24353    0   13          -  365.24353      -     -    0s
+H    0     0                     976.2251107  365.24353  62.6%     -    0s
+     0     0  577.99599    0   32  976.22511  577.99599  40.8%     -    0s
+     0     0  601.24891    0   34  976.22511  601.24891  38.4%     -    0s
+H    0     0                     609.6670876  601.24891  1.38%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Cover: 1
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 7
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.25 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 609.667 976.225 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.096670875788e+02, best bound 6.096670875788e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:10 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x534dcdbd
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.407837e+02, 61 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  340.78375    0   20          -  340.78375      -     -    0s
+     0     0  365.41481    0   13          -  365.41481      -     -    0s
+H    0     0                     959.5591379  367.99579  61.6%     -    0s
+     0     0  420.33458    0   32  959.55914  420.33458  56.2%     -    0s
+     0     0  462.52307    0   34  959.55914  462.52307  51.8%     -    0s
+H    0     0                     663.2505468  578.59532  12.8%     -    0s
+     0     0  592.21657    0   20  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   14  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   21  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   32  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   20  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   19  663.25055  592.21657  10.7%     -    0s
+H    0     0                     605.8159159  592.21657  2.24%     -    0s
+     0     0  605.81592    0   21  605.81592  605.81592  0.00%     -    0s
+
+Cutting planes:
+  Cover: 1
+  MIR: 10
+  StrongCG: 3
+  Flow cover: 6
+  Inf proof: 1
+  Zero half: 1
+
+Explored 1 nodes (295 simplex iterations) in 0.41 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 3: 605.816 663.251 959.559 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.058159158676e+02, best bound 6.058159158676e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:10 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x534dcdbd
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.407837e+02, 61 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  340.78375    0   20          -  340.78375      -     -    0s
+     0     0  365.41481    0   13          -  365.41481      -     -    0s
+H    0     0                     959.5591379  367.99579  61.6%     -    0s
+     0     0  420.33458    0   32  959.55914  420.33458  56.2%     -    0s
+     0     0  462.52307    0   34  959.55914  462.52307  51.8%     -    0s
+H    0     0                     663.2505468  578.59532  12.8%     -    0s
+     0     0  592.21657    0   20  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   14  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   21  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   32  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   20  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   19  663.25055  592.21657  10.7%     -    0s
+H    0     0                     605.8159159  592.21657  2.24%     -    0s
+     0     0  605.81592    0   21  605.81592  605.81592  0.00%     -    0s
+
+Cutting planes:
+  Cover: 1
+  MIR: 10
+  StrongCG: 3
+  Flow cover: 6
+  Inf proof: 1
+  Zero half: 1
+
+Explored 1 nodes (295 simplex iterations) in 0.40 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 3: 605.816 663.251 959.559 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.058159158676e+02, best bound 6.058159158676e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:11 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x377618e2
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.06s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.608428e+02, 56 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  360.84283    0   14          -  360.84283      -     -    0s
+     0     0  386.51815    0   21          -  386.51815      -     -    0s
+     0     0  449.32252    0   25          -  449.32252      -     -    0s
+     0     0  471.02951    0   26          -  471.02951      -     -    0s
+     0     0  471.02951    0   37          -  471.02951      -     -    0s
+H    0     0                     688.7420768  471.02951  31.6%     -    0s
+     0     0  471.02951    0   38  688.74208  471.02951  31.6%     -    0s
+H    0     0                     620.0892502  471.02951  24.0%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 9
+  StrongCG: 2
+  Flow cover: 8
+  GUB cover: 1
+  Mod-K: 3
+  RLT: 3
+
+Explored 1 nodes (163 simplex iterations) in 0.28 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 620.089 688.742 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.200892502244e+02, best bound 6.200892502244e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:11 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x377618e2
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.608428e+02, 56 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  360.84283    0   14          -  360.84283      -     -    0s
+     0     0  386.51815    0   21          -  386.51815      -     -    0s
+     0     0  449.32252    0   25          -  449.32252      -     -    0s
+     0     0  471.02951    0   26          -  471.02951      -     -    0s
+     0     0  471.02951    0   37          -  471.02951      -     -    0s
+H    0     0                     688.7420768  471.02951  31.6%     -    0s
+     0     0  471.02951    0   38  688.74208  471.02951  31.6%     -    0s
+H    0     0                     620.0892502  471.02951  24.0%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 9
+  StrongCG: 2
+  Flow cover: 8
+  GUB cover: 1
+  Mod-K: 3
+  RLT: 3
+
+Explored 1 nodes (163 simplex iterations) in 0.24 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 620.089 688.742 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.200892502244e+02, best bound 6.200892502244e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:11 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0xccaa240b
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.807692e+02, 66 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  380.76925    0    9          -  380.76925      -     -    0s
+     0     0  383.34892    0   15          -  383.34892      -     -    0s
+H    0     0                     985.2979388  383.34892  61.1%     -    0s
+     0     0  436.51227    0   20  985.29794  436.51227  55.7%     -    0s
+     0     0  472.56305    0   22  985.29794  472.56305  52.0%     -    0s
+     0     0  472.56305    0   30  985.29794  472.56305  52.0%     -    0s
+H    0     0                     718.0961134  472.56305  34.2%     -    0s
+H    0     0                     632.6169488  472.56305  25.3%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 3
+  StrongCG: 3
+  Flow cover: 8
+  Inf proof: 1
+  Zero half: 1
+
+Explored 1 nodes (145 simplex iterations) in 0.26 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 3: 632.617 718.096 985.298 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.326169488258e+02, best bound 6.326169488258e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:12 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0xccaa240b
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.807692e+02, 66 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  380.76925    0    9          -  380.76925      -     -    0s
+     0     0  383.34892    0   15          -  383.34892      -     -    0s
+H    0     0                     985.2979388  383.34892  61.1%     -    0s
+     0     0  436.51227    0   20  985.29794  436.51227  55.7%     -    0s
+     0     0  472.56305    0   22  985.29794  472.56305  52.0%     -    0s
+     0     0  472.56305    0   30  985.29794  472.56305  52.0%     -    0s
+H    0     0                     718.0961134  472.56305  34.2%     -    0s
+H    0     0                     632.6169488  472.56305  25.3%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 3
+  StrongCG: 3
+  Flow cover: 8
+  Inf proof: 1
+  Zero half: 1
+
+Explored 1 nodes (145 simplex iterations) in 0.31 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 3: 632.617 718.096 985.298 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.326169488258e+02, best bound 6.326169488258e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:12 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x5c5f5e0c
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.05s
+Presolved: 101 rows, 121 columns, 814 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 3.965426e+02, 68 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  396.54264    0   14          -  396.54264      -     -    0s
+H    0     0                     748.6673713  396.54264  47.0%     -    0s
+     0     0  470.60101    0   16  748.66737  470.60101  37.1%     -    0s
+     0     0  567.80339    0   34  748.66737  567.80339  24.2%     -    0s
+     0     0  748.66737    0   31  748.66737  748.66737  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 2
+  Flow cover: 2
+
+Explored 1 nodes (143 simplex iterations) in 0.21 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 748.667 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.486673712729e+02, best bound 7.486673712729e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:12 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x5c5f5e0c
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 814 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 3.965426e+02, 68 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  396.54264    0   14          -  396.54264      -     -    0s
+H    0     0                     748.6673713  396.54264  47.0%     -    0s
+     0     0  470.60101    0   16  748.66737  470.60101  37.1%     -    0s
+     0     0  567.80339    0   34  748.66737  567.80339  24.2%     -    0s
+     0     0  748.66737    0   31  748.66737  748.66737  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 2
+  Flow cover: 2
+
+Explored 1 nodes (143 simplex iterations) in 0.20 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 748.667 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 7.486673712729e+02, best bound 7.486673712729e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:13 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x737f20a9
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [1e+02, 1e+05]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 68 rows and 93 columns
+Presolve time: 0.06s
+Presolved: 99 rows, 117 columns, 808 nonzeros
+Variable types: 0 continuous, 117 integer (65 binary)
+
+Root relaxation: objective 4.980622e+02, 64 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  498.06221    0   20          -  498.06221      -     -    0s
+     0     0  593.23494    0   19          -  593.23494      -     -    0s
+H    0     0                     979.0100869  593.23494  39.4%     -    0s
+     0     0  687.05553    0   27  979.01009  687.05553  29.8%     -    0s
+     0     0  699.82031    0   27  979.01009  699.82031  28.5%     -    0s
+     0     2  699.82031    0   27  979.01009  699.82031  28.5%     -    0s
+*   34     0              13     926.5728065  911.53065  1.62%  12.7    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 3
+  StrongCG: 2
+  RLT: 2
+
+Explored 36 nodes (585 simplex iterations) in 0.50 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 926.573 979.01 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 9.265728065237e+02, best bound 9.265728065237e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:13 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x737f20a9
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [1e+02, 1e+05]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 68 rows and 93 columns
+Presolve time: 0.04s
+Presolved: 99 rows, 117 columns, 808 nonzeros
+Variable types: 0 continuous, 117 integer (65 binary)
+
+Root relaxation: objective 4.980622e+02, 64 iterations, 0.02 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  498.06221    0   20          -  498.06221      -     -    0s
+     0     0  593.23494    0   19          -  593.23494      -     -    0s
+H    0     0                     979.0100869  593.23494  39.4%     -    0s
+     0     0  687.05553    0   27  979.01009  687.05553  29.8%     -    0s
+     0     0  699.82031    0   27  979.01009  699.82031  28.5%     -    0s
+     0     2  699.82031    0   27  979.01009  699.82031  28.5%     -    0s
+*   34     0              13     926.5728065  911.53065  1.62%  12.7    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 3
+  StrongCG: 2
+  RLT: 2
+
+Explored 36 nodes (585 simplex iterations) in 0.69 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 926.573 979.01 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 9.265728065237e+02, best bound 9.265728065237e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:14 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1365 nonzeros
+Model fingerprint: 0x5996c9e3
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [2e+02, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 99 rows and 146 columns
+Presolve time: 0.04s
+Presolved: 68 rows, 64 columns, 389 nonzeros
+Variable types: 0 continuous, 64 integer (36 binary)
+
+Root relaxation: objective 4.762871e+02, 33 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  476.28711    0    9          -  476.28711      -     -    0s
+     0     0  718.97487    0   10          -  718.97487      -     -    0s
+H    0     0                     940.8714547  718.97487  23.6%     -    0s
+     0     0  940.87145    0   33  940.87145  940.87145  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Implied bound: 1
+  MIR: 9
+  StrongCG: 2
+  Flow cover: 3
+
+Explored 1 nodes (75 simplex iterations) in 0.12 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 940.871 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 9.408714547093e+02, best bound 9.408714547093e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:14 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1365 nonzeros
+Model fingerprint: 0x5996c9e3
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [2e+02, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 99 rows and 146 columns
+Presolve time: 0.04s
+Presolved: 68 rows, 64 columns, 389 nonzeros
+Variable types: 0 continuous, 64 integer (36 binary)
+
+Root relaxation: objective 4.762871e+02, 33 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  476.28711    0    9          -  476.28711      -     -    0s
+     0     0  718.97487    0   10          -  718.97487      -     -    0s
+H    0     0                     940.8714547  718.97487  23.6%     -    0s
+     0     0  940.87145    0   33  940.87145  940.87145  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Implied bound: 1
+  MIR: 9
+  StrongCG: 2
+  Flow cover: 3
+
+Explored 1 nodes (75 simplex iterations) in 0.16 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 940.871 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 9.408714547093e+02, best bound 9.408714547093e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:14 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1369 nonzeros
+Model fingerprint: 0x4f965c3e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [2e+02, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 6 rows and 67 columns
+Presolve time: 0.00s
+
+Explored 0 nodes (0 simplex iterations) in 0.00 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:14 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1369 nonzeros
+Model fingerprint: 0x4f965c3e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 1e+04]
+  Objective range  [2e+02, 2e+06]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 6 rows and 67 columns
+Presolve time: 0.00s
+
+Explored 0 nodes (0 simplex iterations) in 0.00 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:37:15 2024
+
+Academic license - for non-commercial use only
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:52:24 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x6a8fdea3
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.267558e+02, 63 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  326.75580    0   20          -  326.75580      -     -    0s
+     0     0  350.50720    0   13          -  350.50720      -     -    0s
+H    0     0                     588.3963919  357.40053  39.3%     -    0s
+     0     0  409.28479    0   24  588.39639  409.28479  30.4%     -    0s
+     0     0  431.12383    0   35  588.39639  431.12383  26.7%     -    0s
+
+Cutting planes:
+  MIR: 14
+  StrongCG: 3
+  Flow cover: 11
+  Inf proof: 3
+  Mod-K: 4
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.36 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 588.396 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.883963918989e+02, best bound 5.883963918989e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:52:24 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x6a8fdea3
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.267558e+02, 63 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  326.75580    0   20          -  326.75580      -     -    0s
+     0     0  350.50720    0   13          -  350.50720      -     -    0s
+H    0     0                     588.3963919  357.40053  39.3%     -    0s
+     0     0  409.28479    0   24  588.39639  409.28479  30.4%     -    0s
+     0     0  431.12383    0   35  588.39639  431.12383  26.7%     -    0s
+
+Cutting planes:
+  MIR: 14
+  StrongCG: 3
+  Flow cover: 11
+  Inf proof: 3
+  Mod-K: 4
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.25 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 588.396 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.883963918989e+02, best bound 5.883963918989e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:52:25 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x21caf129
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.277408e+02, 62 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  327.74082    0   15          -  327.74082      -     -    0s
+H    0     0                     643.0999555  327.74082  49.0%     -    0s
+     0     0  351.66983    0    7  643.09996  351.66983  45.3%     -    0s
+     0     0  571.84537    0   30  643.09996  571.84537  11.1%     -    0s
+H    0     0                     587.6952214  571.84537  2.70%     -    0s
+     0     0  584.05922    0   30  587.69522  584.05922  0.62%     -    0s
+     0     0  587.69522    0   32  587.69522  587.69522  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 1
+  StrongCG: 1
+  Flow cover: 3
+  RLT: 2
+
+Explored 1 nodes (131 simplex iterations) in 0.20 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 587.695 643.1 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.876952213579e+02, best bound 5.876952213579e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:52:25 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x21caf129
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.277408e+02, 62 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  327.74082    0   15          -  327.74082      -     -    0s
+H    0     0                     643.0999555  327.74082  49.0%     -    0s
+     0     0  351.66983    0    7  643.09996  351.66983  45.3%     -    0s
+     0     0  571.84537    0   30  643.09996  571.84537  11.1%     -    0s
+H    0     0                     587.6952214  571.84537  2.70%     -    0s
+     0     0  584.05922    0   30  587.69522  584.05922  0.62%     -    0s
+     0     0  587.69522    0   32  587.69522  587.69522  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 1
+  StrongCG: 1
+  Flow cover: 3
+  RLT: 2
+
+Explored 1 nodes (131 simplex iterations) in 0.19 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 587.695 643.1 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.876952213579e+02, best bound 5.876952213579e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:52:25 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x14e3ead5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.328173e+02, 61 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  332.81734    0   20          -  332.81734      -     -    0s
+     0     0  358.79167    0   13          -  358.79167      -     -    0s
+H    0     0                     595.0129880  359.89164  39.5%     -    0s
+     0     0  415.67609    0   24  595.01299  415.67609  30.1%     -    0s
+     0     0  538.35384    0   35  595.01299  538.35384  9.52%     -    0s
+
+Cutting planes:
+  MIR: 15
+  StrongCG: 3
+  Flow cover: 8
+  Inf proof: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (142 simplex iterations) in 0.28 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 595.013 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.950129879898e+02, best bound 5.950129879898e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:52:26 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x14e3ead5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.328173e+02, 61 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  332.81734    0   20          -  332.81734      -     -    0s
+     0     0  358.79167    0   13          -  358.79167      -     -    0s
+H    0     0                     595.0129880  359.89164  39.5%     -    0s
+     0     0  415.67609    0   24  595.01299  415.67609  30.1%     -    0s
+     0     0  538.35384    0   35  595.01299  538.35384  9.52%     -    0s
+
+Cutting planes:
+  MIR: 15
+  StrongCG: 3
+  Flow cover: 8
+  Inf proof: 2
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (142 simplex iterations) in 0.29 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 595.013 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.950129879898e+02, best bound 5.950129879898e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:52:26 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0xcd9269e8
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.373285e+02, 61 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  337.32848    0   20          -  337.32848      -     -    0s
+     0     0  365.24353    0   13          -  365.24353      -     -    0s
+H    0     0                     976.2251107  365.24353  62.6%     -    0s
+     0     0  577.99599    0   32  976.22511  577.99599  40.8%     -    0s
+     0     0  601.24891    0   34  976.22511  601.24891  38.4%     -    0s
+H    0     0                     609.6670876  601.24891  1.38%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Cover: 1
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 7
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.31 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 609.667 976.225 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.096670875788e+02, best bound 6.096670875788e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:52:26 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0xcd9269e8
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.373285e+02, 61 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  337.32848    0   20          -  337.32848      -     -    0s
+     0     0  365.24353    0   13          -  365.24353      -     -    0s
+H    0     0                     976.2251107  365.24353  62.6%     -    0s
+     0     0  577.99599    0   32  976.22511  577.99599  40.8%     -    0s
+     0     0  601.24891    0   34  976.22511  601.24891  38.4%     -    0s
+H    0     0                     609.6670876  601.24891  1.38%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Cover: 1
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 7
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (145 simplex iterations) in 0.30 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 609.667 976.225 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.096670875788e+02, best bound 6.096670875788e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 16:52:27 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1364 nonzeros
+Model fingerprint: 0x534dcdbd
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [1e+00, 5e+01]
+  Objective range  [1e+02, 5e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 846 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 3.407837e+02, 61 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0  340.78375    0   20          -  340.78375      -     -    0s
+     0     0  365.41481    0   13          -  365.41481      -     -    0s
+H    0     0                     959.5591379  367.99579  61.6%     -    0s
+     0     0  420.33458    0   32  959.55914  420.33458  56.2%     -    0s
+     0     0  462.52307    0   34  959.55914  462.52307  51.8%     -    0s
+H    0     0                     663.2505468  578.59532  12.8%     -    0s
+     0     0  592.21657    0   20  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   14  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   21  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   32  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   20  663.25055  592.21657  10.7%     -    0s
+     0     0  592.21657    0   19  663.25055  592.21657  10.7%     -    0s
+H    0     0                     605.8159159  592.21657  2.24%     -    0s
+     0     0  605.81592    0   21  605.81592  605.81592  0.00%     -    0s
+
+Cutting planes:
+  Cover: 1
+  MIR: 10
+  StrongCG: 3
+  Flow cover: 6
+  Inf proof: 1
+  Zero half: 1
+
+Explored 1 nodes (295 simplex iterations) in 0.50 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 3: 605.816 663.251 959.559 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 6.058159158676e+02, best bound 6.058159158676e+02, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:03:39 2024
+
+Academic license - for non-commercial use only
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:08:33 2024
+
+Academic license - for non-commercial use only
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:08:45 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4b7a1cea
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 848 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 2.021421e+03, 53 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2021.42102    0   12          - 2021.42102      -     -    0s
+H    0     0                    2261.1963919 2021.42102  10.6%     -    0s
+     0     0 2021.72034    0   16 2261.19639 2021.72034  10.6%     -    0s
+     0     0 2261.19639    0   25 2261.19639 2261.19639  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 9
+  StrongCG: 5
+  Flow cover: 2
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (95 simplex iterations) in 0.21 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2261.2 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.261196391899e+03, best bound 2.261196391899e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:08:46 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4b7a1cea
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 848 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 2.021421e+03, 53 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2021.42102    0   12          - 2021.42102      -     -    0s
+H    0     0                    2261.1963919 2021.42102  10.6%     -    0s
+     0     0 2021.72034    0   16 2261.19639 2021.72034  10.6%     -    0s
+     0     0 2261.19639    0   25 2261.19639 2261.19639  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 9
+  StrongCG: 5
+  Flow cover: 2
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (95 simplex iterations) in 0.16 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2261.2 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.261196391899e+03, best bound 2.261196391899e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:08:46 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x849bb5b4
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.090810e+03, 52 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2090.80995    0   17          - 2090.80995      -     -    0s
+H    0     0                    2400.1140777 2090.80995  12.9%     -    0s
+     0     0 2130.78551    0   12 2400.11408 2130.78551  11.2%     -    0s
+     0     0 2180.04511    0   36 2400.11408 2180.04511  9.17%     -    0s
+     0     0 2238.67688    0   34 2400.11408 2238.67688  6.73%     -    0s
+H    0     0                    2365.9018976 2238.67688  5.38%     -    0s
+
+Cutting planes:
+  MIR: 8
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+
+Explored 1 nodes (146 simplex iterations) in 0.26 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 2365.9 2400.11 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.365901897627e+03, best bound 2.365901897627e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:08:47 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x849bb5b4
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.07s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.090810e+03, 52 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2090.80995    0   17          - 2090.80995      -     -    0s
+H    0     0                    2400.1140777 2090.80995  12.9%     -    0s
+     0     0 2130.78551    0   12 2400.11408 2130.78551  11.2%     -    0s
+     0     0 2180.04511    0   36 2400.11408 2180.04511  9.17%     -    0s
+     0     0 2238.67688    0   34 2400.11408 2238.67688  6.73%     -    0s
+H    0     0                    2365.9018976 2238.67688  5.38%     -    0s
+
+Cutting planes:
+  MIR: 8
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+
+Explored 1 nodes (146 simplex iterations) in 0.33 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 2365.9 2400.11 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.365901897627e+03, best bound 2.365901897627e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:08:47 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe900d6b5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.05s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.378461e+03, 55 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2378.46069    0    9          - 2378.46069      -     -    0s
+     0     0 2439.11472    0   17          - 2439.11472      -     -    0s
+H    0     0                    2674.5974919 2439.11472  8.80%     -    0s
+     0     0 2500.18454    0    9 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0    7 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0   15 2674.59749 2500.18454  6.52%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  Implied bound: 4
+  MIR: 7
+  StrongCG: 3
+  Flow cover: 6
+  Mod-K: 5
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (136 simplex iterations) in 0.27 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2674.6 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.674597491905e+03, best bound 2.674597491905e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:08:47 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe900d6b5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.378461e+03, 55 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2378.46069    0    9          - 2378.46069      -     -    0s
+     0     0 2439.11472    0   17          - 2439.11472      -     -    0s
+H    0     0                    2674.5974919 2439.11472  8.80%     -    0s
+     0     0 2500.18454    0    9 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0    7 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0   15 2674.59749 2500.18454  6.52%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  Implied bound: 4
+  MIR: 7
+  StrongCG: 3
+  Flow cover: 6
+  Mod-K: 5
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (136 simplex iterations) in 0.21 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2674.6 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.674597491905e+03, best bound 2.674597491905e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:08:48 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xf18f66c1
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [5e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.778199e+03, 56 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2778.19884    0   18          - 2778.19884      -     -    0s
+     0     0 2798.76566    0   23          - 2798.76566      -     -    0s
+     0     0 2817.72206    0   24          - 2817.72206      -     -    0s
+     0     0 2830.48629    0   34          - 2830.48629      -     -    0s
+H    0     0                    3043.9418621 2830.48629  7.01%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 3
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (127 simplex iterations) in 0.23 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 3043.94 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 3.043941862101e+03, best bound 3.043941862101e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:08:48 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xf18f66c1
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [5e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.778199e+03, 56 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2778.19884    0   18          - 2778.19884      -     -    0s
+     0     0 2798.76566    0   23          - 2798.76566      -     -    0s
+     0     0 2817.72206    0   24          - 2817.72206      -     -    0s
+     0     0 2830.48629    0   34          - 2830.48629      -     -    0s
+H    0     0                    3043.9418621 2830.48629  7.01%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 3
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (127 simplex iterations) in 0.25 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 3043.94 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 3.043941862101e+03, best bound 3.043941862101e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:08:48 2024
+
+Academic license - for non-commercial use only
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:46:05 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4b7a1cea
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 848 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 2.021421e+03, 53 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2021.42102    0   12          - 2021.42102      -     -    0s
+H    0     0                    2261.1963919 2021.42102  10.6%     -    0s
+     0     0 2021.72034    0   16 2261.19639 2021.72034  10.6%     -    0s
+     0     0 2261.19639    0   25 2261.19639 2261.19639  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 9
+  StrongCG: 5
+  Flow cover: 2
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (95 simplex iterations) in 0.15 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2261.2 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.261196391899e+03, best bound 2.261196391899e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:46:06 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4b7a1cea
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 848 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 2.021421e+03, 53 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2021.42102    0   12          - 2021.42102      -     -    0s
+H    0     0                    2261.1963919 2021.42102  10.6%     -    0s
+     0     0 2021.72034    0   16 2261.19639 2021.72034  10.6%     -    0s
+     0     0 2261.19639    0   25 2261.19639 2261.19639  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 9
+  StrongCG: 5
+  Flow cover: 2
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (95 simplex iterations) in 0.20 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2261.2 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.261196391899e+03, best bound 2.261196391899e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:46:06 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x849bb5b4
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.090810e+03, 52 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2090.80995    0   17          - 2090.80995      -     -    0s
+H    0     0                    2400.1140777 2090.80995  12.9%     -    0s
+     0     0 2130.78551    0   12 2400.11408 2130.78551  11.2%     -    0s
+     0     0 2180.04511    0   36 2400.11408 2180.04511  9.17%     -    0s
+     0     0 2238.67688    0   34 2400.11408 2238.67688  6.73%     -    0s
+H    0     0                    2365.9018976 2238.67688  5.38%     -    0s
+
+Cutting planes:
+  MIR: 8
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+
+Explored 1 nodes (146 simplex iterations) in 0.27 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 2365.9 2400.11 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.365901897627e+03, best bound 2.365901897627e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:46:06 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x849bb5b4
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.090810e+03, 52 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2090.80995    0   17          - 2090.80995      -     -    0s
+H    0     0                    2400.1140777 2090.80995  12.9%     -    0s
+     0     0 2130.78551    0   12 2400.11408 2130.78551  11.2%     -    0s
+     0     0 2180.04511    0   36 2400.11408 2180.04511  9.17%     -    0s
+     0     0 2238.67688    0   34 2400.11408 2238.67688  6.73%     -    0s
+H    0     0                    2365.9018976 2238.67688  5.38%     -    0s
+
+Cutting planes:
+  MIR: 8
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+
+Explored 1 nodes (146 simplex iterations) in 0.27 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 2365.9 2400.11 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.365901897627e+03, best bound 2.365901897627e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:46:07 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe900d6b5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.378461e+03, 55 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2378.46069    0    9          - 2378.46069      -     -    0s
+     0     0 2439.11472    0   17          - 2439.11472      -     -    0s
+H    0     0                    2674.5974919 2439.11472  8.80%     -    0s
+     0     0 2500.18454    0    9 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0    7 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0   15 2674.59749 2500.18454  6.52%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  Implied bound: 4
+  MIR: 7
+  StrongCG: 3
+  Flow cover: 6
+  Mod-K: 5
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (136 simplex iterations) in 0.24 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2674.6 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.674597491905e+03, best bound 2.674597491905e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:46:07 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe900d6b5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.378461e+03, 55 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2378.46069    0    9          - 2378.46069      -     -    0s
+     0     0 2439.11472    0   17          - 2439.11472      -     -    0s
+H    0     0                    2674.5974919 2439.11472  8.80%     -    0s
+     0     0 2500.18454    0    9 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0    7 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0   15 2674.59749 2500.18454  6.52%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  Implied bound: 4
+  MIR: 7
+  StrongCG: 3
+  Flow cover: 6
+  Mod-K: 5
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (136 simplex iterations) in 0.31 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2674.6 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.674597491905e+03, best bound 2.674597491905e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:14 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4b7a1cea
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 848 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 2.021421e+03, 53 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2021.42102    0   12          - 2021.42102      -     -    0s
+H    0     0                    2261.1963919 2021.42102  10.6%     -    0s
+     0     0 2021.72034    0   16 2261.19639 2021.72034  10.6%     -    0s
+     0     0 2261.19639    0   25 2261.19639 2261.19639  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 9
+  StrongCG: 5
+  Flow cover: 2
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (95 simplex iterations) in 0.20 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2261.2 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.261196391899e+03, best bound 2.261196391899e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:15 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4b7a1cea
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 848 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 2.021421e+03, 53 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2021.42102    0   12          - 2021.42102      -     -    0s
+H    0     0                    2261.1963919 2021.42102  10.6%     -    0s
+     0     0 2021.72034    0   16 2261.19639 2021.72034  10.6%     -    0s
+     0     0 2261.19639    0   25 2261.19639 2261.19639  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 9
+  StrongCG: 5
+  Flow cover: 2
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (95 simplex iterations) in 0.16 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2261.2 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.261196391899e+03, best bound 2.261196391899e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:15 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x849bb5b4
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.090810e+03, 52 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2090.80995    0   17          - 2090.80995      -     -    0s
+H    0     0                    2400.1140777 2090.80995  12.9%     -    0s
+     0     0 2130.78551    0   12 2400.11408 2130.78551  11.2%     -    0s
+     0     0 2180.04511    0   36 2400.11408 2180.04511  9.17%     -    0s
+     0     0 2238.67688    0   34 2400.11408 2238.67688  6.73%     -    0s
+H    0     0                    2365.9018976 2238.67688  5.38%     -    0s
+
+Cutting planes:
+  MIR: 8
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+
+Explored 1 nodes (146 simplex iterations) in 0.25 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 2365.9 2400.11 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.365901897627e+03, best bound 2.365901897627e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:16 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x849bb5b4
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.090810e+03, 52 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2090.80995    0   17          - 2090.80995      -     -    0s
+H    0     0                    2400.1140777 2090.80995  12.9%     -    0s
+     0     0 2130.78551    0   12 2400.11408 2130.78551  11.2%     -    0s
+     0     0 2180.04511    0   36 2400.11408 2180.04511  9.17%     -    0s
+     0     0 2238.67688    0   34 2400.11408 2238.67688  6.73%     -    0s
+H    0     0                    2365.9018976 2238.67688  5.38%     -    0s
+
+Cutting planes:
+  MIR: 8
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+
+Explored 1 nodes (146 simplex iterations) in 0.21 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 2365.9 2400.11 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.365901897627e+03, best bound 2.365901897627e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:16 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe900d6b5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.378461e+03, 55 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2378.46069    0    9          - 2378.46069      -     -    0s
+     0     0 2439.11472    0   17          - 2439.11472      -     -    0s
+H    0     0                    2674.5974919 2439.11472  8.80%     -    0s
+     0     0 2500.18454    0    9 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0    7 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0   15 2674.59749 2500.18454  6.52%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  Implied bound: 4
+  MIR: 7
+  StrongCG: 3
+  Flow cover: 6
+  Mod-K: 5
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (136 simplex iterations) in 0.22 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2674.6 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.674597491905e+03, best bound 2.674597491905e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:16 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe900d6b5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.378461e+03, 55 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2378.46069    0    9          - 2378.46069      -     -    0s
+     0     0 2439.11472    0   17          - 2439.11472      -     -    0s
+H    0     0                    2674.5974919 2439.11472  8.80%     -    0s
+     0     0 2500.18454    0    9 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0    7 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0   15 2674.59749 2500.18454  6.52%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  Implied bound: 4
+  MIR: 7
+  StrongCG: 3
+  Flow cover: 6
+  Mod-K: 5
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (136 simplex iterations) in 0.21 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2674.6 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.674597491905e+03, best bound 2.674597491905e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:17 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xf18f66c1
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [5e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.778199e+03, 56 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2778.19884    0   18          - 2778.19884      -     -    0s
+     0     0 2798.76566    0   23          - 2798.76566      -     -    0s
+     0     0 2817.72206    0   24          - 2817.72206      -     -    0s
+     0     0 2830.48629    0   34          - 2830.48629      -     -    0s
+H    0     0                    3043.9418621 2830.48629  7.01%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 3
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (127 simplex iterations) in 0.24 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 3043.94 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 3.043941862101e+03, best bound 3.043941862101e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:17 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xf18f66c1
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [5e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.778199e+03, 56 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2778.19884    0   18          - 2778.19884      -     -    0s
+     0     0 2798.76566    0   23          - 2798.76566      -     -    0s
+     0     0 2817.72206    0   24          - 2817.72206      -     -    0s
+     0     0 2830.48629    0   34          - 2830.48629      -     -    0s
+H    0     0                    3043.9418621 2830.48629  7.01%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 3
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (127 simplex iterations) in 0.26 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 3043.94 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 3.043941862101e+03, best bound 3.043941862101e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:17 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x52766cd6
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [6e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.05s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 3.147442e+03, 72 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 3147.44183    0   18          - 3147.44183      -     -    0s
+     0     0 3202.97115    0   29          - 3202.97115      -     -    0s
+     0     0 3227.92326    0   34          - 3227.92326      -     -    0s
+     0     0 3227.92326    0   34          - 3227.92326      -     -    0s
+     0     0 3328.91461    0   26          - 3328.91461      -     -    0s
+     0     0 3328.91461    0   27          - 3328.91461      -     -    0s
+H    0     0                    3708.7246299 3328.91461  10.2%     -    0s
+H    0     0                    3643.7808591 3328.91461  8.64%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 9
+  StrongCG: 3
+  Flow cover: 5
+  Zero half: 2
+  Mod-K: 1
+
+Explored 1 nodes (150 simplex iterations) in 0.33 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 3643.78 3708.72 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 3.643780859051e+03, best bound 3.643780859051e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:18 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x52766cd6
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [6e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 3.147442e+03, 72 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 3147.44183    0   18          - 3147.44183      -     -    0s
+     0     0 3202.97115    0   29          - 3202.97115      -     -    0s
+     0     0 3227.92326    0   34          - 3227.92326      -     -    0s
+     0     0 3227.92326    0   34          - 3227.92326      -     -    0s
+     0     0 3328.91461    0   26          - 3328.91461      -     -    0s
+     0     0 3328.91461    0   27          - 3328.91461      -     -    0s
+H    0     0                    3708.7246299 3328.91461  10.2%     -    0s
+H    0     0                    3643.7808591 3328.91461  8.64%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 9
+  StrongCG: 3
+  Flow cover: 5
+  Zero half: 2
+  Mod-K: 1
+
+Explored 1 nodes (150 simplex iterations) in 0.29 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 3643.78 3708.72 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 3.643780859051e+03, best bound 3.643780859051e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 17:50:18 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x99a844a8
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [6e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 90 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 120 columns, 808 nonzeros
+Variable types: 0 continuous, 120 integer (66 binary)
+
+Root relaxation: objective 3.722087e+03, 67 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 3722.08662    0   20          - 3722.08662      -     -    0s
+     0     0 3804.58756    0   26          - 3804.58756      -     -    0s
+     0     0 3861.04983    0   26          - 3861.04983      -     -    0s
+     0     0 3861.04983    0   26          - 3861.04983      -     -    0s
+     0     2 3880.78096    0   26          - 3880.78096      -     -    0s
+*   20     5               7    4104.8954313 3944.82410  3.90%  12.3    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 3
+  StrongCG: 2
+  Flow cover: 1
+  RLT: 2
+
+Explored 25 nodes (380 simplex iterations) in 0.52 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 4104.9 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 4.104895431277e+03, best bound 4.104895431277e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:46:13 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x98bbcb51
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 848 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 2.020384e+03, 53 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2020.38400    0   12          - 2020.38400      -     -    0s
+H    0     0                    2258.7731631 2020.38400  10.6%     -    0s
+     0     0 2021.05625    0   16 2258.77316 2021.05625  10.5%     -    0s
+     0     0 2258.77316    0   24 2258.77316 2258.77316  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 9
+  StrongCG: 5
+  Flow cover: 2
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (94 simplex iterations) in 0.16 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2258.77 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.258773163108e+03, best bound 2.258773163108e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:46:13 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xec63dc0e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [6e+01, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.04s
+Presolved: 103 rows, 125 columns, 848 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 1.822815e+03, 75 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1822.81490    0   12          - 1822.81490      -     -    0s
+     0     0 1898.15771    0   18          - 1898.15771      -     -    0s
+H    0     0                    2118.1227500 1898.15771  10.4%     -    0s
+     0     0 1918.78874    0   28 2118.12275 1918.78874  9.41%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 9
+  StrongCG: 1
+  Flow cover: 5
+  Zero half: 6
+  Mod-K: 1
+  RLT: 2
+
+Explored 1 nodes (137 simplex iterations) in 0.20 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2118.12 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.118122750030e+03, best bound 2.118122750030e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:46:14 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x5eb90ee1
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.02s
+Presolved: 103 rows, 125 columns, 849 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 2.089204e+03, 55 iterations, 0.02 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2089.20425    0   19          - 2089.20425      -     -    0s
+     0     0 2127.82771    0   19          - 2127.82771      -     -    0s
+     0     0 2170.32256    0   28          - 2170.32256      -     -    0s
+     0     0 2182.20137    0   35          - 2182.20137      -     -    0s
+H    0     0                    2364.1798394 2182.20137  7.70%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 6
+  StrongCG: 3
+  Flow cover: 9
+  Zero half: 1
+  RLT: 2
+
+Explored 1 nodes (192 simplex iterations) in 0.29 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2364.18 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.364179839378e+03, best bound 2.364179839378e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:46:14 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x38129fc9
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [6e+01, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.05s
+Presolved: 103 rows, 125 columns, 849 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 1.332535e+03, 66 iterations, 0.02 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1332.53511    0   18          - 1332.53511      -     -    0s
+     0     0 1355.65066    0   12          - 1355.65066      -     -    0s
+     0     0 1411.94613    0   26          - 1411.94613      -     -    0s
+H    0     0                    1647.7227500 1411.94613  14.3%     -    0s
+     0     0 1426.51344    0   29 1647.72275 1426.51344  13.4%     -    0s
+H    0     0                    1592.3731631 1426.51344  10.4%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 10
+  StrongCG: 2
+  Flow cover: 8
+  Zero half: 1
+  Mod-K: 2
+
+Explored 1 nodes (127 simplex iterations) in 0.20 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 1592.37 1647.72 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 1.592373163108e+03, best bound 1.592373163108e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:46:14 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x95628b29
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.372699e+03, 55 iterations, 0.02 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2372.69912    0    9          - 2372.69912      -     -    0s
+     0     0 2431.43973    0   16          - 2431.43973      -     -    0s
+     0     0 2564.93746    0   15          - 2564.93746      -     -    0s
+H    0     0                    2668.0069668 2564.93746  3.86%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 6
+  StrongCG: 2
+  Flow cover: 2
+  Mod-K: 2
+
+Explored 1 nodes (113 simplex iterations) in 0.18 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2668.01 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.668006966846e+03, best bound 2.668006966846e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:46:14 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x500f6a35
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [6e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 1.332535e+03, 55 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1332.53511    0   19          - 1332.53511      -     -    0s
+H    0     0                    1647.7227500 1332.53511  19.1%     -    0s
+     0     0 1356.48400    0   12 1647.72275 1356.48400  17.7%     -    0s
+H    0     0                    1592.3731631 1577.37316  0.94%     -    0s
+     0     0 1592.37316    0   32 1592.37316 1592.37316  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 6
+  MIR: 9
+  StrongCG: 3
+  Flow cover: 4
+  Zero half: 1
+  RLT: 2
+
+Explored 1 nodes (129 simplex iterations) in 0.15 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 1592.37 1647.72 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 1.592373163108e+03, best bound 1.592373163108e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:46:15 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x59ee382a
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [5e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.761031e+03, 55 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2761.03085    0   19          - 2761.03085      -     -    0s
+     0     0 2780.30357    0   24          - 2780.30357      -     -    0s
+     0     0 2807.56079    0   20          - 2807.56079      -     -    0s
+     0     0 2807.56079    0   22          - 2807.56079      -     -    0s
+     0     0 2807.56079    0   22          - 2807.56079      -     -    0s
+     0     2 2841.87796    0   22          - 2841.87796      -     -    0s
+*   33    20               9    3161.0281240 2941.39320  6.95%  13.8    0s
+*   69     0               9    3020.2479376 3020.24794  0.00%   9.4    0s
+
+Cutting planes:
+  Gomory: 5
+  Flow cover: 1
+  Inf proof: 2
+  RLT: 2
+
+Explored 70 nodes (780 simplex iterations) in 0.62 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 3020.25 3161.03 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 3.020247937630e+03, best bound 3.020247937630e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:46:15 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xf63c815e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [5e-01, 5e+01]
+  Objective range  [6e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 1.332535e+03, 63 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1332.53511    0   19          - 1332.53511      -     -    0s
+H    0     0                    1647.7227500 1332.53511  19.1%     -    0s
+     0     0 1469.01191    0   10 1647.72275 1469.01191  10.8%     -    0s
+H    0     0                    1592.3731631 1469.01191  7.75%     -    0s
+     0     0 1469.84525    0   16 1592.37316 1469.84525  7.69%     -    0s
+     0     0 1469.84525    0   13 1592.37316 1469.84525  7.69%     -    0s
+     0     0 1469.84525    0   21 1592.37316 1469.84525  7.69%     -    0s
+     0     0 1592.37316    0   18 1592.37316 1592.37316  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 3
+  Flow cover: 3
+
+Explored 1 nodes (264 simplex iterations) in 0.27 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 1592.37 1647.72 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 1.592373163108e+03, best bound 1.592373163108e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:46:16 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xefdf62c7
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [6e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 3.132635e+03, 71 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 3132.63460    0    9          - 3132.63460      -     -    0s
+     0     0 3152.39053    0   28          - 3152.39053      -     -    0s
+     0     0 3189.58796    0   25          - 3189.58796      -     -    0s
+     0     0 3221.96376    0   27          - 3221.96376      -     -    0s
+     0     0 3383.32922    0   20          - 3383.32922      -     -    0s
+     0     0 3383.32922    0   21          - 3383.32922      -     -    0s
+H    0     0                    3686.7968331 3383.32922  8.23%     -    0s
+H    0     0                    3623.9381063 3383.32922  6.64%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  Cover: 1
+  MIR: 10
+  StrongCG: 3
+  Flow cover: 2
+  Inf proof: 4
+  Zero half: 1
+  Mod-K: 1
+  RLT: 1
+
+Explored 1 nodes (185 simplex iterations) in 0.34 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 3623.94 3686.8 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 3.623938106292e+03, best bound 3.623938106292e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:46:16 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xba7c206e
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [6e-01, 5e+01]
+  Objective range  [6e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.05s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 1.332535e+03, 55 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1332.53511    0   19          - 1332.53511      -     -    0s
+H    0     0                    1647.7227500 1332.53511  19.1%     -    0s
+     0     0 1356.48400    0   12 1647.72275 1356.48400  17.7%     -    0s
+H    0     0                    1592.3731631 1577.37316  0.94%     -    0s
+     0     0 1592.37316    0   32 1592.37316 1592.37316  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 6
+  MIR: 9
+  StrongCG: 3
+  Flow cover: 4
+  Zero half: 1
+  RLT: 2
+
+Explored 1 nodes (129 simplex iterations) in 0.19 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 1592.37 1647.72 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 1.592373163108e+03, best bound 1.592373163108e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:35 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x4b7a1cea
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 848 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 2.021421e+03, 53 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2021.42102    0   12          - 2021.42102      -     -    0s
+H    0     0                    2261.1963919 2021.42102  10.6%     -    0s
+     0     0 2021.72034    0   16 2261.19639 2021.72034  10.6%     -    0s
+     0     0 2261.19639    0   25 2261.19639 2261.19639  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 4
+  MIR: 9
+  StrongCG: 5
+  Flow cover: 2
+  Mod-K: 3
+  RLT: 2
+
+Explored 1 nodes (95 simplex iterations) in 0.17 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2261.2 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.261196391899e+03, best bound 2.261196391899e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:35 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x83ddb69c
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [6e+01, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 64 rows and 85 columns
+Presolve time: 0.03s
+Presolved: 103 rows, 125 columns, 848 nonzeros
+Variable types: 0 continuous, 125 integer (69 binary)
+
+Root relaxation: objective 1.823645e+03, 84 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1823.64467    0    4          - 1823.64467      -     -    0s
+     0     0 1898.64556    0   10          - 1898.64556      -     -    0s
+     0     0 2005.15101    0   32          - 2005.15101      -     -    0s
+H    0     0                    2120.3325079 2005.15101  5.43%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  MIR: 4
+  StrongCG: 1
+  Flow cover: 7
+  Inf proof: 3
+  Zero half: 1
+
+Explored 1 nodes (148 simplex iterations) in 0.22 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2120.33 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.120332507871e+03, best bound 2.120332507871e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:36 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x849bb5b4
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.090810e+03, 52 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2090.80995    0   17          - 2090.80995      -     -    0s
+H    0     0                    2400.1140777 2090.80995  12.9%     -    0s
+     0     0 2130.78551    0   12 2400.11408 2130.78551  11.2%     -    0s
+     0     0 2180.04511    0   36 2400.11408 2180.04511  9.17%     -    0s
+     0     0 2238.67688    0   34 2400.11408 2238.67688  6.73%     -    0s
+H    0     0                    2365.9018976 2238.67688  5.38%     -    0s
+
+Cutting planes:
+  MIR: 8
+  StrongCG: 1
+  Flow cover: 9
+  GUB cover: 1
+  Zero half: 2
+
+Explored 1 nodes (146 simplex iterations) in 0.27 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 2365.9 2400.11 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.365901897627e+03, best bound 2.365901897627e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:36 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xd381d586
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [6e+01, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.05s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 1.334141e+03, 55 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1334.14082    0   16          - 1334.14082      -     -    0s
+H    0     0                    1649.4999555 1334.14082  19.1%     -    0s
+     0     0 1358.06983    0    7 1649.49996 1358.06983  17.7%     -    0s
+     0     0 1358.06983    0   13 1649.49996 1358.06983  17.7%     -    0s
+     0     0 1358.06983    0   13 1649.49996 1358.06983  17.7%     -    0s
+     0     0 1369.30262    0    7 1649.49996 1369.30262  17.0%     -    0s
+H    0     0                    1594.0952214 1395.26695  12.5%     -    0s
+     0     0 1594.09522    0   18 1594.09522 1594.09522  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 8
+  Cover: 1
+  MIR: 10
+  StrongCG: 2
+  Flow cover: 5
+  Mod-K: 2
+
+Explored 1 nodes (179 simplex iterations) in 0.23 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 1594.1 1649.5 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 1.594095221358e+03, best bound 1.594095221358e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:36 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe900d6b5
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [1e+02, 1e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.378461e+03, 55 iterations, 0.01 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2378.46069    0    9          - 2378.46069      -     -    0s
+     0     0 2439.11472    0   17          - 2439.11472      -     -    0s
+H    0     0                    2674.5974919 2439.11472  8.80%     -    0s
+     0     0 2500.18454    0    9 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0    7 2674.59749 2500.18454  6.52%     -    0s
+     0     0 2500.18454    0   15 2674.59749 2500.18454  6.52%     -    0s
+
+Cutting planes:
+  Gomory: 2
+  Implied bound: 4
+  MIR: 7
+  StrongCG: 3
+  Flow cover: 6
+  Mod-K: 5
+  RLT: 3
+  Relax-and-lift: 1
+
+Explored 1 nodes (136 simplex iterations) in 0.21 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 2674.6 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 2.674597491905e+03, best bound 2.674597491905e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:36 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xee01c785
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [4e-01, 5e+01]
+  Objective range  [6e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 1.339217e+03, 53 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1339.21734    0   20          - 1339.21734      -     -    0s
+H    0     0                    1654.3132751 1339.21734  19.0%     -    0s
+     0     0 1366.13440    0   12 1654.31328 1366.13440  17.4%     -    0s
+H    0     0                    1601.4129880 1583.51502  1.12%     -    0s
+     0     0 1601.41299    0   34 1601.41299 1601.41299  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 9
+  StrongCG: 4
+  Flow cover: 4
+  Zero half: 1
+  RLT: 2
+
+Explored 1 nodes (156 simplex iterations) in 0.14 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 1601.41 1654.31 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 1.601412987990e+03, best bound 1.601412987990e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:37 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xf18f66c1
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [5e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 2.778199e+03, 56 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 2778.19884    0   18          - 2778.19884      -     -    0s
+     0     0 2798.76566    0   23          - 2798.76566      -     -    0s
+     0     0 2817.72206    0   24          - 2817.72206      -     -    0s
+     0     0 2830.48629    0   34          - 2830.48629      -     -    0s
+H    0     0                    3043.9418621 2830.48629  7.01%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 15
+  StrongCG: 2
+  Flow cover: 3
+  Inf proof: 1
+  Zero half: 1
+  Mod-K: 1
+  RLT: 3
+
+Explored 1 nodes (127 simplex iterations) in 0.24 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 3043.94 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 3.043941862101e+03, best bound 3.043941862101e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:37 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xe893c54d
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [5e-01, 5e+01]
+  Objective range  [6e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 1.343728e+03, 63 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1343.72848    0   20          - 1343.72848      -     -    0s
+     0     0 1398.35865    0   12          - 1398.35865      -     -    0s
+     0     0 1424.20736    0   35          - 1424.20736      -     -    0s
+H    0     0                    1667.1015018 1424.20736  14.6%     -    0s
+     0     0 1589.73066    0   36 1667.10150 1589.73066  4.64%     -    0s
+H    0     0                    1616.0670876 1589.73066  1.63%     -    0s
+
+Cutting planes:
+  Cover: 1
+  MIR: 7
+  StrongCG: 2
+  Flow cover: 7
+  Zero half: 1
+  RLT: 3
+
+Explored 1 nodes (162 simplex iterations) in 0.25 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 1616.07 1667.1 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 1.616067087579e+03, best bound 1.616067087579e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:37 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x52766cd6
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [6e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 3.147442e+03, 72 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 3147.44183    0   18          - 3147.44183      -     -    0s
+     0     0 3202.97115    0   29          - 3202.97115      -     -    0s
+     0     0 3227.92326    0   34          - 3227.92326      -     -    0s
+     0     0 3227.92326    0   34          - 3227.92326      -     -    0s
+     0     0 3328.91461    0   26          - 3328.91461      -     -    0s
+     0     0 3328.91461    0   27          - 3328.91461      -     -    0s
+H    0     0                    3708.7246299 3328.91461  10.2%     -    0s
+H    0     0                    3643.7808591 3328.91461  8.64%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 9
+  StrongCG: 3
+  Flow cover: 5
+  Zero half: 2
+  Mod-K: 1
+
+Explored 1 nodes (150 simplex iterations) in 0.25 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 3643.78 3708.72 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 3.643780859051e+03, best bound 3.643780859051e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:38 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x32cd7160
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [6e-01, 5e+01]
+  Objective range  [6e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 89 columns
+Presolve time: 0.04s
+Presolved: 101 rows, 121 columns, 817 nonzeros
+Variable types: 0 continuous, 121 integer (67 binary)
+
+Root relaxation: objective 1.347184e+03, 53 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1347.18375    0   20          - 1347.18375      -     -    0s
+H    0     0                    1669.6505468 1347.18375  19.3%     -    0s
+     0     0 1372.94809    0   12 1669.65055 1372.94809  17.8%     -    0s
+H    0     0                    1612.2159159 1590.38204  1.35%     -    0s
+     0     0 1612.21592    0   34 1612.21592 1612.21592  0.00%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 9
+  StrongCG: 4
+  Flow cover: 4
+  Zero half: 1
+  RLT: 2
+
+Explored 1 nodes (118 simplex iterations) in 0.16 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 1612.22 1669.65 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 1.612215915868e+03, best bound 1.612215915868e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:38 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x99a844a8
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [6e-01, 5e+01]
+  Objective range  [1e+02, 2e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 90 columns
+Presolve time: 0.02s
+Presolved: 101 rows, 120 columns, 808 nonzeros
+Variable types: 0 continuous, 120 integer (66 binary)
+
+Root relaxation: objective 3.722087e+03, 67 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 3722.08662    0   20          - 3722.08662      -     -    0s
+     0     0 3804.58756    0   26          - 3804.58756      -     -    0s
+     0     0 3861.04983    0   26          - 3861.04983      -     -    0s
+     0     0 3861.04983    0   26          - 3861.04983      -     -    0s
+     0     2 3880.78096    0   26          - 3880.78096      -     -    0s
+*   20     5               7    4104.8954313 3944.82410  3.90%  12.3    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 3
+  StrongCG: 2
+  Flow cover: 1
+  RLT: 2
+
+Explored 25 nodes (380 simplex iterations) in 0.45 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 4104.9 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 4.104895431277e+03, best bound 4.104895431277e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:38 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0x44371e98
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [6e-01, 5e+01]
+  Objective range  [6e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 66 rows and 90 columns
+Presolve time: 0.03s
+Presolved: 101 rows, 120 columns, 808 nonzeros
+Variable types: 0 continuous, 120 integer (66 binary)
+
+Root relaxation: objective 1.367243e+03, 73 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1367.24283    0   16          - 1367.24283      -     -    0s
+     0     0 1374.04240    0   19          - 1374.04240      -     -    0s
+     0     0 1419.67906    0   22          - 1419.67906      -     -    0s
+     0     0 1446.00663    0   18          - 1446.00663      -     -    0s
+     0     0 1446.00663    0   18          - 1446.00663      -     -    0s
+H    0     0                    1626.4892502 1446.00663  11.1%     -    0s
+
+Cutting planes:
+  Gomory: 3
+  Flow cover: 1
+
+Explored 1 nodes (172 simplex iterations) in 0.35 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 1: 1626.49 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 1.626489250224e+03, best bound 1.626489250224e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:39 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xec872999
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [9e-01, 5e+01]
+  Objective range  [1e+02, 4e+03]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 68 rows and 94 columns
+Presolve time: 0.05s
+Presolved: 99 rows, 116 columns, 786 nonzeros
+Variable types: 0 continuous, 116 integer (64 binary)
+
+Root relaxation: objective 4.449370e+03, 54 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 4449.37004    0   16          - 4449.37004      -     -    0s
+     0     0 4490.73372    0   28          - 4490.73372      -     -    0s
+     0     0 4506.20147    0   33          - 4506.20147      -     -    0s
+     0     0 4509.63726    0   32          - 4509.63726      -     -    0s
+     0     0 4509.63726    0   32          - 4509.63726      -     -    0s
+H    0     0                    6030.6854326 4509.63726  25.2%     -    0s
+     0     2 4594.49073    0   32 6030.68543 4594.49073  23.8%     -    0s
+*   24     2              13    5883.9839266 5883.98393  0.00%  11.7    0s
+
+Cutting planes:
+  Gomory: 3
+  MIR: 6
+  Flow cover: 2
+  Relax-and-lift: 1
+
+Explored 25 nodes (399 simplex iterations) in 0.53 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 5883.98 6030.69 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 5.883983926624e+03, best bound 5.883983926624e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:39 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xdecf3d1d
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [9e-01, 5e+01]
+  Objective range  [6e+01, 6e+02]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 68 rows and 94 columns
+Presolve time: 0.03s
+Presolved: 99 rows, 116 columns, 786 nonzeros
+Variable types: 0 continuous, 116 integer (64 binary)
+
+Root relaxation: objective 1.387169e+03, 43 iterations, 0.00 seconds
+
+    Nodes    |    Current Node    |     Objective Bounds      |     Work
+ Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
+
+     0     0 1387.16925    0   12          - 1387.16925      -     -    0s
+H    0     0                    1724.4961134 1387.16925  19.6%     -    0s
+     0     0 1409.82748    0   17 1724.49611 1409.82748  18.2%     -    0s
+     0     0 1504.76006    0   21 1724.49611 1504.76006  12.7%     -    0s
+     0     0 1628.45279    0   22 1724.49611 1628.45279  5.57%     -    0s
+     0     0 1629.87215    0   27 1724.49611 1629.87215  5.49%     -    0s
+H    0     0                    1639.0169488 1629.87215  0.56%     -    0s
+
+Cutting planes:
+  Gomory: 1
+  MIR: 6
+  StrongCG: 2
+  Flow cover: 6
+  Zero half: 1
+  RLT: 2
+
+Explored 1 nodes (114 simplex iterations) in 0.23 seconds
+Thread count was 8 (of 8 available processors)
+
+Solution count 2: 1639.02 1724.5 
+
+Optimal solution found (tolerance 1.00e-04)
+Best objective 1.639016948826e+03, best bound 1.639016948826e+03, gap 0.0000%
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:40 2024
+
+Academic license - for non-commercial use only
+Gurobi Optimizer version 9.0.2 build v9.0.2rc0 (win64)
+Optimize a model with 167 rows, 210 columns and 1372 nonzeros
+Model fingerprint: 0xec2d4b05
+Variable types: 0 continuous, 210 integer (110 binary)
+Coefficient statistics:
+  Matrix range     [8e-01, 5e+01]
+  Objective range  [1e+02, 1e+04]
+  Bounds range     [1e+00, 6e+00]
+  RHS range        [1e+00, 1e+02]
+Presolve removed 163 rows and 209 columns
+Presolve time: 0.04s
+
+Explored 0 nodes (0 simplex iterations) in 0.04 seconds
+Thread count was 1 (of 8 available processors)
+
+Solution count 0
+
+Model is infeasible
+Best objective -, best bound -, gap -
+
+Gurobi 9.0.2 (win64, Java) logging started Fri Sep 27 18:47:40 2024
+
+Academic license - for non-commercial use only
diff --git a/Code/out/production/Code/MixedReality_Optimization.class b/Code/out/production/Code/MixedReality_Optimization.class
new file mode 100644
index 0000000000000000000000000000000000000000..66be1749c70a2b330022005c1dfdf4b20b5123ef
GIT binary patch
literal 7057
zcmX^0Z`VEs1_pCRS1yKFhJ{=VJq(LD7#4Fe#4s%3WLV0ujDul07sCpMl|l>*3~NEs
z>x38>8P;+zY~Wzn$ic9QgJClV!xj#Pt?UfjxEKUMMhG%&=VI8wuoFb=5@KLt*dxTi
z3?i5q_6aetFzn%AIKa+ukc&Z@;SdMIVGw-;WZ_W`hGXmu$GI338BVY>oaACq2GOU4
z7+4wB3Nf&Ote0ju3sQcLi{U)O1rTu&r23K&13SYNki=Dxrb|K$91K_38Lo3N7&6@8
zV(4R7!ohHpgW(pNLnZ?lusP&AfEggk+Z+sc*c|3V1lSzvAq)<NyKD~q5H_1bdjVKE
z2g5xMhWqRc54afI85VLgJY;wTGT||Z^@N*Y4#QIr@r<3}ITwQ;!wU|Ems||J46i_(
z*BlIQI2hh?Fudbnc+bJ`frH^A2g4^0hR+-fU)UMGvNL>RWMH$&%*!mXV`N~~&<tZ_
zU~$e*No8c<_sPsl^()OyN-YXWOv*`RWDxSnPfpAUODxI+@u7k&B^jB;j11B~zL^!N
zDM6`;IhiGu@%{xRnYo!&i6xo&dDe^!EV+r9d5jEV8qq#kiDilUIf;4c`oSednR)5f
zAS*eG67y2>bA9rYLAHREl$K=X=m&v?tr;1(Aqs*^5{pV08HABc@yshpO;0VdW@O+k
z2FZfl2(lG!5VBp24BTKvA(^?EdFhM{j9!ck-1(&?1*IkN`AJ!Zj0{RX1v!bysky0n
zCHg_Bg{7&*B>^x2f3QMpMh4E*ycC!byr~tb$)zA0Lo#zyQH(QUWMIr>WMK4UWME8W
zWRT1Q2d00TTWMZ0NP}lyaY<rca%wRngG_00W?p(|US?W;QLayZVv0*<aY<2T64+o=
z4?E@O=cFcrLRAo?JteUy#U-^Y6CBix41776dD+E|MX4Y|Qd1ZigpooH5jL!e1qGfd
zj11g~1qC^o$xzLbK1f`BM}(9$BLjP0YDsy1Q8pukfKPE{aY<^fz8^%ynvp@K2ra05
z6Y~<&Q;VR1s*Mz=;FOV=gC4f={$;5}i8(n03^QV6&>_Mw-^8Ny%)CU9X^g3i45CQs
z#kC?iwEz_Qpk$d?lwQopAdDqdGBWT6mn0@<`z98E6FNIXCp*J;c7`A93_lqe1e1$W
z6H8K&LWq$;R|ClwSlY%DpghnpbIt(g4FQO5aI*KwEH1HTWDo<z7b3q^7Nmlm!pNY4
zrq%|+M^5Q>ApPK^j3u>+Xm~<&AZ!EWLbjCDvdm;~)`zh4K?y54)tZq(5SDh4(kyps
zN_r|pMKL3TBASUdKB#8cS+g_zVr1Y9&P>lsEGaEYWn@sra0aF(kh{2o^Gl18Q{6H_
zg^(Q1az+nSZtyU~F~svQ{AT#W$iU?r6d#;g1o9IPLqEd=c80$^4F4GZGcw4zq!uR^
zWrEXzLVlV;Nk*zdYDGb6Q6?zkTd^}T@GvqmGBGj;IOXS;6qghw7Wk%?WaOt5^RqEB
zb1<^-FtReT@i4M8a&RzmGBU{MDuD8vLJCr@wNeQ6^K|nM@?~T&P*6|^$w*bu$W2Ym
z(^SaGPfStB%mbyN;?!b=q)G)t1675B)FOrA<kY;xqRf0o1_P*x`FRT99BrkLmY<W8
zU!Iwlu8^qU=O5(j=!0S%BZDx876VmA21#87aH*+~lMl(}RtiCmelGsL3XBZmm~w8O
z5w0$b3<99A)CVUINEyt-$i>Lb&d9^V@SBmBhmntwpMy~V6bgbIj6xt<n1fM-kwM-W
zlrcb#1O+Ly$WSQBS4c`#C@lt+M|`M-2M<FWqbMVT9H@|mX-k8aj|!Qv0+NSOj8UA2
zVJgEkMh10o36fa_Qw>h!plAa{WPV<%0yJMSGHAl3^uc;?mpUL<NH8*J5!L`JSr{33
zK%rBt@0_2PmYL4MD9OPn#ltAg5YNLX!zjznD96Jn&#1t|sK}_q!>G)t!ojEt3MMrk
zMs-FF4n|Ez24Qd*gEK9>P~u_KVu)vC5KYZX&QHnAOZUxBDa}cZPtM6q%>z|@DXA#p
zpd84<sLiOu$RJRVpP5&ZoReRg0@1|CAd+5`SdfvKoL`n&l#^Hq6Bb4@9ApS1gD9HO
za4W&C1o>6pv8X7q5>z&^GwSj%>M`o`Fd8r#@-P}P8uKukFmmuPnlhR(GVr2gd>%$~
zMt(*H&h*5R)bhm2cmp0r3r0&GMk`SEf{Pj>sW3%in<KH!kk}STY)d4z2@>0gk%0?l
ztDylSgCx$91D4*wap9kom6}|_$RG&zI9Lc;<)SEql<<rU;y9{IMg}3U0pO7HEJ-a&
zEXgloWMD5#%qdOvPXjfEqBJ38CbAvYsFr{$T1E!u{L&J5HI|vLA5fH;R}x%Ol$w}p
z4NFL<!i)^;1t3K^d5jFA*lMOQE=Frc8%72tT?I%Z50rgiIj<Oz^{f;a85zWL6SGsD
z^YfAuOTsftGMw|l8MCAqWVR==FCd{}&B(x$1Zk#(fxHWDSw=B3s6k68)M64^n3ZRi
zWGEDuq=4*W&r7W+@dTxK77b5LPn5`jHuyjRh+;KV+?tVrqa+{V4n_tM4Xmz%r#nVQ
z1~qJ<gA_3kqpTSjq#z}s0=NaK04q)vGK)bjR!24k<`k@U%lYN!DL@)!*p1TDz}afR
zbQY+7<V#O2aYe3+g<!r0Cq7V)1*H-V^mZFaFHcZvL25}Rs6hnshFEAxW)8I74zG<s
z60FHNsfk6545FY~t0WaknM-0xA|r#2h9|U5fs&fBiGi#|${Ws!IjMOmAhWsCQ%hj&
z3sCezgAeQpm?~>V2LANa5>Q*)GtW0OCkNE|VAjy|Vq{=0D$QeL@FywsklK>yEmC-E
z-^f4AHOSG&N5MZJL;+M!fqMtAYDNLx{#Pi;%uTgYU{uHj=L;{W^TFW(PekIWpaLMV
zBo%HD#2!WlPYuG3!Hj=Q5m4|N`#J`>d-^$&=4O6yi2-i*h7=`&8iHJjDJhNx1wNU1
z*^CUD$VnXPAx!ICTtE)sLzI1><j2UsoS2dVic{nS0V!$09YFr#)Dma}K-<H@P}{(<
z4>AL+jw2IZl8T`ua##rq>ZxQT7W<`ElrS=|fQk|HLI7$jBLjPSYKdPWsL#fhT3DKx
z1CBK$4?z`bMlmu7gBu2r3e-Oj(&lAnv;|e@j*JW{V9$c%IWw;;KRXrLwS^RzZi&ey
z`9+oNjLwV<Y(Dw<*`)=H3_PBBd8tLtIf=!^pzhxcsArMQfHXKg67y1WQj1j}8m*C>
zhZzG<%OM&=DhpDvC`az<z&wa#DAWk&#GIVq%#u`Vc19OQ22~9IL99S^8zX}pesv6r
z3^5F`-~kO521Zajoq>@dfq{WRpMjBqk%57MRcku~<3<Js1}26?1_lN;u%IAA5(5JR
z517r$kj#+6z`(%Ckjjt-(ae&-z{ViPz`*#K)rNTo1Cy@+mmSLv1|};O5YLKLh}nuw
zl5GbAixvAO238@qZ44k<dKUu+1H(23cAaeuoHH4OHZicu?qc8q3oU2h2C3wRs1)Ma
z#=tJg0#?Qc66f8<zz$Wy2a;k%Nbw`21Q1dtyBP!{w=)P?aY}LuaBpJ}-oYSZ#U;tL
zjX`u5$mLcXn;2LnId(CKL#>x*2C3kb<lMy|!N35QmIO<KoFKK0fqgfFbfhG^B*%6J
z87oeZpzJmVc4<k@Z47cd800|$3Sd==k&>L-8I-KJb~7l0nJQM?%w{~IJOYx77<O)A
zU=`)r#h?Z@n%Rt3lvjXz5yKpiFz+q~b+9nVObtm+QC?9V9a&IFXzpOp+Qy)5&L_zQ
za=|tR9V-E-kf4~L7+<Qn@FoUUG2vYdx=;fo1td8nIkqwAL6z}Iazk|LTZux2&~zHW
zbc#ZCw(v48|DW8#!?^sv+j0gDAMI@nMjJtig7FpOTLwc0W^j^u$6(FCz#z`R#2~@I
z&LGLa#URBXz#z>a#vsce#URI^$e_re$)Lnw%Am|(!=S?8&7j5*%%H&#&7jGU%%H`P
z$DqSd#-PVg$Dq&9$zaGZk->~%CWAS{A_fbFbqtmayBMq(jx$&@oMNzJxWHh~aFfA-
z;TeN7!#f5ShTjZsjLZz~j64jUj3Nv^jPeY=j9Lr<j3x|$jE)Q;jNS~Pj1deGjIj*S
zj9Covj71CyjI|7jjI9jGj6Dn~j58V18J93*F|J|AX57w@!?>RzkMS5oKI3JEBF1|R
zA&gHL0vKO0R4~3}C}VubP|o;?p%R=mJ~2ozEMib)NN31k;AB|GAjy!)kj22ou!})}
zA)6tGfrH@!gBVzhld*^)has0CkAV+lGebT@0fPWzD?=nhAwwR6AY%_h5JM3|9)mFB
zb_R8ZVuk_+QAQVr1q>w&r3}1`x(s_6${0!+co>)%Uoez2lrk_furoeps9>mMU}E56
ze85n}P|Co}Ai#Kwp_-wRfrUYg@d`r?LnQ+%gB0ThhFXRk1~vvo#*++n4D}4`3^y4C
zq3-+5@SdT8p^<@;QJ&#6LlZ+Y0~ezf!vTgChE@h{#&--X3~dbU;JE(G(818jz`)SO
zz`&5s!1tfQn}LI!p_`GNp$CN78G6_mdf6HJ7#P^4*oD|F{xC?hGxYvvaAV-brVOlD
znw>$Bok5wAf#DB>7~?O7`TrSM85r3ax)~Up*cl927`Q-V2awW+;U5D#12Y2yL!H(R
z24f#>Arm1}5e73628(SBR@y?QLe?S-HX;mmV4k&*g9wA82!k`2=OE+?Rtb@F6><af
zK>BtwxJPbh@bJ}P7Bbz*;K|IO!y;r2VXz80Kp1R7u3(0?&Nc=w?F|eJ&;)PBz{|kE
zP|Lu|(7+(f(8!?3(8Qq6(9B@V(8A!&(9RId(7_PH(8-X>(8Z9)(9KZJ(8Ex}&<9R9
z3J{-wBZh&2m7x+GF^mks4B8A68746>F-(S*ybzHoplAm5!5Nr9#Wr&e0}}%a0|Vm=
zDb|GyGqiUycr!Bi>g;6jVPu%e(4n)F!IzQY0E3^O?luO0p@3}+fioHSb%ji~F$C!f
zxq?WLcrXs}5U@C>u8=iMWhjP77)-<grY0O&WcmM6DR#mxgP4NpvIwwQnBtLOab%Z4
z{Dv$N1ycie8Qk?C5s=FS*cLKuKnt`5Xn_XT1P?BFu)sy&R)GT+6r^wm!bKonM0Q{_
z%z^OWg?j?zKyZ{n0)SIj2qd!ne=MkGW&szow;0SA7#Joourf?$kY|{}pv^Fq!H{7Z
zgE_+t24{wu44w?L82lOLFhn!VWk_V0&ydTofT5US5ko!0Vun_Rr3@1pmN86cSivxh
zVHLxChSdx^8P+fyWmwB_nqeKoMTQLwcNsP^JZ9L$@RDH*!&io_48Iw+GqN-6VB}@k
z#VE<Jn^B%&FQYcYK1M@^1B@mNhZwCG4l{-@9AQjgILesDaGbG-;RIs^!zsoVhSQ8)
z3}+dqF`Q$Z!*GFd1;a(gbqtpocQIUHJiu^`@eIRt#!C!08SgRNVtm4Ihw(YXJ#fx2
zVPIvDXQ*J9&M<?4nPDf4#Tddc0V>A8_<~_3Ln){+!}x+>7Q-Y4MtE)k$<1Pz&A<pQ
zrra2${xI;cGtBwJpvBJMCoU)`_=`dC7X#BD25zjP5Vb1o41R)O08z~_7u+tI$H2@m
zAIw_72%03~Vqj#nV{~G)XOLuA#lXN|!NAF|nt_pF4VYXHCU=9$y<l=bm^=+8&w$Cx
HVDcIOdy<ov

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/application/AppLink.class b/Code/out/production/Code/application/AppLink.class
new file mode 100644
index 0000000000000000000000000000000000000000..c8677d70c07fe5df96c74bef9787c072ed7ae16e
GIT binary patch
literal 1837
zcmX^0Z`VEs1_pBmH!cPq1`RF-ZU#*dp#>teL4*z`12=;%h|mKO`XItUh=GB@gq^{Z
zoxzNefvq^dv?w{1kwM5OE3qt5KPNFST|c;_C^IkJnvsD!CAGLDGcU0uGe3`!fv=>r
zASczipwuTdFTEs#k%7^Lk%1R1=vNLCW3$Q3%Pg^DWYE;WG!aw8#YHoWk%7fIKP8os
zf!`-HFV(L!Hz~C!Brz!m?5h0a#GJ6iqD&AUD#%ijky*^hAnKD?P>_?E40fHqV?lvW
zW?r^6BLin~YDqBESE5)P0kV)UJ+;II*>55mnwXAbWZ)}CQzw|7S`va549psuE{qI<
z#h5ZI8es1Uz%(I(NdTrAA;eLV4+(fi1}=#E-7-O8zytM~9w>r%7=#(jc^IS^q<I+R
zK!gf|5)XqSh~Q=5<6+<j5dsW?JPbk%f{Y9TPWkyI#U(|F1-_{z8Tl#2{A>&s91NB`
z3|0)*j10n9LXeR`0Avv)CHN<0r6!j!GB9gshH)|2FxWCOC_<g15DiH>wv0LoNXf*O
zF_w`*JU1~r)j2;eIk6->vn0bgKd-nXF|VYUk--8>gkT0dmbhSNumd^TiIG7C;k?Ye
zvi$5+XnKX%=a!gUl3!HG&fvnxz~+;mpIutO$iU;7mzP@PoRe5woLbDtFay~UP%|Lm
z<B^z`l9O7j0?}xV=`th{6pbO31*uq+M<c0+grzmI-=Ib~C+6e?XO^T|vop9dGN@ws
z51ZQ<8RYP*V^Cz^X5e99U|?ZjV&G-qV_;xl0woVHEx;fMriH*XCj%pcFoOsKBZDXd
z149D?GXpyV1A~;-b_PZ*?QIN9S~}Ypn6)HWw=uA2X>Ma+-3Znz22#Vo#=yWJ#=ycL
z&cMka!NA8L$socY#URNb%^(gcXBb$)sw5aB89+b^>=H(>7(W9a0~449at$+>1#%B7
z10yJXLtSIXzywysrlq}=fem3Z7g$t|ft5iXY?Bz6&&B|=i4AHKBZCZsEYvK021W*u
z-K<($7}z(!J;4SRR0JEt17@>AjbQ}kF{ow~hp?kNM1_HsK^1HQrb9p;1z9Z5pa3;X
zpMeQtkJc6jj`e5`Q3o4??hr)=C8%aQ24)6OXt8OjZ)M;>cZe1PD}y%J1Wbp3!WrZc
zWvmY2M0bcT*cfz&s9<*pC%Qun7+4t$!6slj1Qg96hp57%#sV55d|F!=*g(;<i-C)Q
z0X>dP!RA3+#0QNdW(GBI0ID-MGB7Z3F)%XNGdMFiFi0{OGB7Z3FfcM0F)%V10{|4!
BVM_o2

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/application/Application.class b/Code/out/production/Code/application/Application.class
new file mode 100644
index 0000000000000000000000000000000000000000..88541eda98e2f68053b121477c7a32435033fe34
GIT binary patch
literal 2791
zcmX^0Z`VEs1_pD6a&`tUE(S&hZ*~SBE(T@>Ul7NSo57zUfQvz#ArQn3VrK~EV&H^u
zLO2;18A3rs7>EexVsK%I0I84UW^iSQ0uj+5gJQTCVj1E<tauQSz|N4!$iSLdP~e%u
z$ROmCl~|UjpOcuEt{+@dl$n=q&B(x-lbM%Y%*Y@Bkt{9A%+dGBEH1HTWZ(?WOwUU!
zDJ@E6WKc(ww(&_UD9Fi7PAtjH&(n7-DDcV5%eJ<&W@O+gN-Zo+EiQ4+NX*P*WKhA-
zh~Ws3F2UrY)WnihM}(n_47wT+y~qyMM7I~_25UwJ7U%qwR7M7VpUk{eztY^K)S{5Y
zq?}Zc$McgDbHWmfGC_Q(AXj2a3e??<44PQ1!nEAQMKg?%fu$rPvzU=V5|2yRit|g0
zl2aKOxKmP#OEUAop~T3*S5jJ#lj<B0>XVw6UXsDc!05urzzY`iD~E}(fFgvEK@{D1
zZ~!whu-RnhWtP}6GKgYvGRS!x#i=EZkO=2UPb~pyD`sR6($IwX2RVW@F$8f(E67-=
zS;A185k`UR74ty}<jR6nXh3VBE5~IC$Q1tK)RG{S1f-6s9ZL!V>rF@3tA@pcSTr*-
zh^MEPgd`TFr<S;t<|TvDv|o8}W>qR9gBsL&)I^9d#3jEpDJRvMk%22WKczG$)h{tO
zm63rX4<4V$xel(FH@GA*Iomg}031f_3`y(^$&3sV7_M**2!%L<-8mq%80;XfU~t-U
z%LJut0i+D02XYi6gE(5ogk=yO1_K5|Mh0OtX;7Skq||sAj2TSW8B%x{QW?@fBI!H~
zMqnKvbM?WI?O0TlSP3c}co@tW%y}3j7$kWZq!^@m800`i216zfLl#3e4?_+^E)PQ<
zLp~2f0Yf1>LlF-{G04yohEg7eGKNw{1_7|4;6U|H%1TWxK@oz46C;BVSQXf6&yv)l
z#FG3XMg~5FAjm0<49tlsDQNitVy3lb6e9z(1}JT?mnG(uruwIW)VV;j0@!wlRo09Q
z9GP$%#88qA%w}sw2KJ1^V!zai60oUJj0`M!V2%h(J=jF3-HZ%;>8T|y$oU^t9lQue
z3JZuBBLiD%VQFFxs8|Li2~eqlC?J?MG+h`O1Yr`+1*MRpgF%sjkwKh+fq|KU2^2F7
z3=B-5$YEe)kO8x08JIxv1n0{$fa(_ous$UQ1_omWW(GzE1_sXE42+Rl+ZmWPfVC+z
zFfg!zB}5oh7#J9Mz-&&a6^sn33~CIF3?KvQ88{d?7#J9&cQY_YYU^l9ux@8yv0~TS
z#=t7czLSBCi6ML=+(<qKW(EcZSq44^IR+^Pd9cxT3~V6n4C)LT3?LxQpvfQ!woaNs
zi$Ris2`sD4paa$`&7jMm!@$bG$H2>=$Dq%^&cFyt<50(hg2RD<K~!ry1G|>?HU<u@
z-3*+O+ZnjFF>oWCA;iGKz`&r$z`~%!z{#M(Ai|&uc8VC-GEulwM8W=LWMBkk3aAx!
z3`}5EY+Bk|8F&z8a)CuP7+4uJk<4O)o5cn<%b3B0fe9RT`V1hm85mf#wlMIb2fPv3
z7)ZdgLXCmMsVM^^C@Vq@2|#ubFUUd644~+PILMTNmB9>b62x=J4w7P!W?*EnfJZMI
zgA{`-Jf&DNFfv#%m}9er58W0^237_u9Ja_|*doUu54Xjdfsw%mYk=^f2Z$}$0&D?d
z%fQHB$6ybQp>+&Q46F<c47Pkb82Eib32`Tb03(B+?oI|lMuwRTYPvfagcunPFfd!O
zNV05W5Z2ztATpDI2gDWyX<7dNx(>*4NH|J?)29;yD}ytGGJ^|)K7%WR1%o?-HG>D(
zL0Swf49X0m;M538R<_W%VqmakZ~&)dRt5_OM+PSbCI)8)1_pix=D!U5><ljK46Yi#
w7?>Cs8QiGib}?LT_hw*a@L^D9@MX|v@MExG2w<>g2qeMn?)cp90nXf>0C_1tQ~&?~

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/device/Device.class b/Code/out/production/Code/device/Device.class
new file mode 100644
index 0000000000000000000000000000000000000000..850ff235cade8c8060a02f82353b9f58d931489c
GIT binary patch
literal 2032
zcmX^0Z`VEs1_pD6SS|)(25U|RUIrU323`hR5Mc-6+Osn_a51n!<QzdFP9VaWo56*_
z6-2nPGq`gwcyKXzGI((^cr*BLF!*vY_%ZmiGXyX)aHXV{WhSSFR2HN%G6?x(C6*=X
z=OpH(>j#$<W#*+@GcvHay12VCGVnU*=M|SE=9Ppc=9H!~GO*+&=B6?-2<PM{CzfR9
z=XvI(<rn3GnT!mAKE;*AC8@dkK2TYZIk}ky#f%J$E{qJKx%nxjIjO|~If==sDgJpb
zU^g%_2te#FEy>K$_sJ|Sv1Vl849-l?ODriZN@ZkFL6f$D@R6NsXU)jKW|NthSz^b?
zprL`O08_+8GmMde#W_DEm63tpCo?bAuQWF)wJ0PpDF+-R`N@enVTnbVAU;%(r6eP>
z7^E5!c={0cTQf4Sr>B<qfx|^aLle^~Mh5m`m;zBOjsv+wEIqXZ7HTMADy*T2B~-<V
zaVQtjz)%e`o(DO;7#V~MKvCcejt)dTa6#e+;uGHBlEma}-^2o_=OxlpOCS*k(N>Jm
zCj|2}atx|r2;zu0-s02}NJv6bBX2q?pDQ@Ov?w{%EfW+k+z^#|pajdqpvVx&!yv*S
z%EO?=pv}Wz4kDx(WEdHQLGt=w=QtJ>C02q`6%T_fgB%Zo1W36ggA_YM5D!BzLkJH;
zC_@M%120OPGBU8FrlhB`GlcOlgfoP&Geqz(L^4D%GMKmq1^EXlKwP0vQdy9ykXfvd
zmtUe#Tv||&UsRHsqN7lpnhH~qoRe5w%+3(a!w|!u&B!1Cb{9D1`X^<jCYLZWFl&I~
zhYu_Pb}-1Tj0_yf`FSOYnR&&G3@AwkqRm<}ijjdiF(n1XNJ!pgWME4zEKSTQMwJ6+
zOhyLg{L&Ie22n^N&CJ&iD9X$$2`(v0P0Y21g&V3cBLjN@NKsB6gCYYjgD?XF0~-Si
zDA*Yo7$h0Q7(^Ku8N?YF7?>FN7+65z%fP_E!XU{Y1*WALWWcm6gB$}RgFINB0s|)l
zBZDG?5(6WHG6Mrc3j;F)D+2?Aiq>`pMlHsz3`|<u+ZdR&bha_DXlZU`VAa~qz!tfk
zfqg3j$40OTDhvz^at!PY3=BdHEDT%>oD9MYd<-HC!VIDe5)5Jt$_(NRstgPaS_~{8
za~aea)EPiP1?)aXu$TygC<7Ci1#%-Z10#b5gC^8P`V5Q=AXThdTNpSuz^!Bh3rc~F
z<^i)=p++-;k|0#G9Rm~CU^Xr7tqhz92Xlc%<rr8Q<iRG0f%$Au6F|W#0S-(?1|0@n
zs9DGk;X-$a64)4Yhv+eYG=ahu#UWhi4pC(QIUW>Bm<};ukOGH*A%iy5A#qSoNos9j
z;LzU5z|F)ki-8Zy;bCG32N}=I0E!qs24-;3^D<~NNHFMv9SN~Q67E+?1|zUvjTsmi
zm>C!)7#JB$7)%+M!07?xepu*ppnKW?Y#yqoA<4>&fdy0sKpmU{b+DAS5Z^Wi{+SHi
zpy*&)&cMBiK|n}w8-ozS#h^sQz+l3_$zaML$Y9PO$zTDt1>$NcxT~eW$)1q`<Z2cM
dCP8)vMg|M4iG~T?+16kKQJu}mU<poIRseO*hSUH6

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/placement/OptimalRequestPlacement_Marginal.class b/Code/out/production/Code/placement/OptimalRequestPlacement_Marginal.class
new file mode 100644
index 0000000000000000000000000000000000000000..8e07d0bc2f5a263bb34c853d4d0530166e698e9d
GIT binary patch
literal 13056
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
QMZu&Pn3M#QQee^;0P%PdIsgCw

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/placement/OptimalRequestPlacement_Overall.class b/Code/out/production/Code/placement/OptimalRequestPlacement_Overall.class
new file mode 100644
index 0000000000000000000000000000000000000000..125abb520ce6bda082f363d0ca4ddfedb3411fb7
GIT binary patch
literal 13037
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
N#lWN_n3MvO#sKfU3eNxl

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/placement/RequestPlacementLogic.class b/Code/out/production/Code/placement/RequestPlacementLogic.class
new file mode 100644
index 0000000000000000000000000000000000000000..6bebe76c4605b363693a05e6ba96dfa78eec73a8
GIT binary patch
literal 229
zcmX^0Z`VEs1_pBmPId-%b_Nbc2IivDJVpk84WGn<f}G6c#FEVXJbgz5+uA29u`E$P
zCowNwKe(hQGcVm*)2AROF*!9iHLpZJD7COOwYVezCg5LMQczlA&B(wNoL^d$oa&aD
zlgh{-g|5seKRq*94`ebUgFJ52z{(gI1V9QQPVi64N=+_dV`N}tU}69PMixc}W(F1p
P1_nk3Rt5$JCI&VD%3?%z

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/placement/RequestPlacementOutput.class b/Code/out/production/Code/placement/RequestPlacementOutput.class
new file mode 100644
index 0000000000000000000000000000000000000000..ac90ffc9c1484cce2a63496cd2f7193e305d2f79
GIT binary patch
literal 1884
zcmX^0Z`VEs1_pBmH!cQV1_Mq89tJ}YVFV(KL4*lAgDDpS8-oEigBgQ4h_GO1u;ga2
zVz6dsuwiGgWn|#VPbx{w%u7uP$uBKpWDxMlN-Rs%FD=Q;(f7$LF0p20;0(@8&r2*R
zElOo%P(hQnf$(z@^V0Q$ONuh{(yi^R85zWp4GqgI&MXN^O)SpOV`LCa%}LEo%_}K(
z%P$Ja%+1V8XJimgEGTd*%}XxH%+CwScS$YFOipEF;D;Cuc8PCdfi)w8DXIt-yCDkD
zUBhORnU`5&$H>5}p&7==z~Y>r0yaN0FV(L!Hz~C!Brz!`m61WnCqFqcCoHij6U2uK
zvXo?G7Bey^`4r?NCWD=>ACy{Hnp#{E02A;pEh#7kg_Kx&YKbE@zX)n*LY#)=8*_9q
zqWvS1o?7CH8H_?G20|lG4MPx%HJ~WtFHSA-M@b688c1#i8wUzKG1Ne+EJ%e0lsdX{
ztQLWckV3NxC4q<(WA&V5X+cV2Nh;RRWz1w`VDw~U;0-QGOwRUAEP%R*D>%QjC^^+F
z6BN19*ker(l-zk3#2F-b7(^IEc^HHl_<0!kK!gwjKO=)6NFI_MJQ9mDd=m@U8SHo%
z>=_(*7#ta#7#Re>3XqZ<JA*S1gA0QzBZC5=B!i;cKPf9UxrC8{4{RVfp@0INk%6T+
zvnmywcs&^znA1~B7#T!0JfR5+Y%xTuH6sHrLa%RP0V4x*L1_sig9S8Zkkvw>7Fh&~
zfeeZaJPf=H3=Av`44^P!U}O+rU|?Wk5M*Fr5Mtm*;R~binLwclmltDTXJ7;cG6N%n
zBm)D3F#{t5BLf2itJZb~#*JVjr5G3(xEPqg2D2~-Ge|QqFz`SWF~~5;GB7YOGRQH=
zGcbV-(1#nag@I`U+yFMP1~Dv}A?{XSU}R8aP{LveGrA#CI1N!|U}R8XP=y*2z`z7{
zHJg_9Rt6T3UziyXevxBfWsnD(BnD9h^$P<78#F-G;Qj=O2*QI*oq>@-1G_D(=(Z>^
zures)umuuL$hHVEpxUB|-4<qaThtg>8Psvu0*QQNTZGYU(PEH*M*b`Y7I0X&Ywc!W
zi`>q@zLkNA#YS3d3j@ne1`b9BmXt*dx>{Qpn6$PquuAV_;ACPrz`zBPhI4i@a5FQ6
zw=gm;|9=YMOfd#l1_lN#25tsz1{nq&1_uUh1~&#hxRZGqEE%*JbiirE9U2k33=9mM
V3`~C*co}~&STHa$=z$ZHJ^=cqggO8K

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/solver/SolverGurobi$1.class b/Code/out/production/Code/solver/SolverGurobi$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..11e7c7501631100634dbc7f6b5811ef55cbef3f9
GIT binary patch
literal 670
zcmX^0Z`VEs1_pBmO)ds8260XXb_NMf1~CRn5Lb$wK^nx7VP}wKXOL%PP*e#n&n!vK
z@J%dG$xAI!DNa+#N-Rsv%qdU_ODqbhEJ$T!V2bu+WZ<w#&dJQnEU{x`VAjwKV`N})
z&QD2YWZ?J7%uDqv%}q)z3Q0`LNo8aZ^2tw5%n3^@$^`MDg1o^ciOJc%i3LzTS8#r5
zQF5wVCP;^1aDGl%YLR<sQGQaU9>{)127cGP<edEC%)E5p)RK(+6m|v$Mg|VQ)Z!A4
z{NfUJ21OnQB?e_422KVp9tIT#RUQU426aXTDUfdcoW#6zeZTzR(&P-c%+#C|*P^2Q
zA|3_}231A|(PFS=`p9;w7&0>Oc;@A$7CGl678j=$GcpJu4DwIPN=+_dWDv%plaWCz
zFSSI!I87g<J~O94A0BLMWr;bZAfu!;G^2g6tFmTfU~%&I_hDp^z^#HkzbGX$FEIxk
z@}7(g%$|NB0tyW53>*v$42%L2pfCWj7&sWX8F&~N8F(2O7_u0c85kKD7&LY;Fz(yK
zwV8ow69_SHV_;$NU(Ued4d$|KV_;zgb2l<DF>o@7Fo-j-GDt8eGpI4JGB7jnF)%Q&
zfz7dG;Adc9U}9ik5MW?n;9+11XJ=q#@C6YJEDVBRIUxpN1_lNe1`!4Z22rqx2!k90
P0|OTWBLh1FNGk^b=)#qS

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/solver/SolverGurobi$Hook.class b/Code/out/production/Code/solver/SolverGurobi$Hook.class
new file mode 100644
index 0000000000000000000000000000000000000000..33385f5b1bebf233eab04344795c7cad5b80c2cb
GIT binary patch
literal 488
zcmX^0Z`VEs1_pBm0d@v%b_PC12A1T+oE%1mNDZI#(xUvNOnvttC)d0(Yb363eoAVN
zwNF-JS)zVvNoJ0|Z(;!kH!rnBzc@`Fq$o3|KtG@;KPe|Q*IF}-k%2QfGd(Y{q_ilN
zkzqcG_SitI%}LBl*Y{7#N=+_7c3D_rk+mI~Q*4l24wA<-z|PtSk88Pt^Gl18Q{6Ii
zQW+TpgY$FBQj6TdL8Axq93umVUutoQM}Bb$I|Dx>gG4b{g+8)E6_5P<Y(@qa2*u->
zmzP@PoRe5woLbDtAOJE&AIU?E48mB<U}I!pWME<d0Y(-^24)5p21W)}1_lNu1~vv}
c26ixugMkxFb20ETFfed2fb?)N@UU?L0HXAc9{>OV

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/solver/SolverGurobi.class b/Code/out/production/Code/solver/SolverGurobi.class
new file mode 100644
index 0000000000000000000000000000000000000000..4577ee7ec3aba58279b77c2cc0c89a0da1d7bbbf
GIT binary patch
literal 8435
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

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/system/Location.class b/Code/out/production/Code/system/Location.class
new file mode 100644
index 0000000000000000000000000000000000000000..2396a01257a45e6b0c97e3c9ef521414c62f1385
GIT binary patch
literal 376
zcmX^0Z`VEs1_pBm2`&a!1|d!c76xGuA;Qie%FZCh$iR`4Sdv*%nv%-M!05urz?qYu
zmk#B#*<|Krme?^euxhxtXofK|usG*~)baad=B4_T<|d^Ug(N2Bq%txH`Q#@j=7c2{
zWrFxnL6(w?%wk3cL7(Ev;*!){eUO@x%=|oSMh33n{L-T2RJTl!W?q<tURGjRA`b&6
zgE$WZ8v{EJ0|x^;BLhF0c18vPkUIUG#JqHU|D>$c<Pt^(W)00S21N!I237_J1||kZ
zkbVXR21bw(V49JElYxtYk%60mfgzHC8LW<9YdZs@mikr(CN0ga49pwBT6q{47=##D
z7#J8h7+4rM!P@v3xEXjE7#I{7m>C!t_!;;Z_!&TeA8ZXHSd4>#oq?HwkwE}#iXZ?B
Cxk1(d

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/system/Network.class b/Code/out/production/Code/system/Network.class
new file mode 100644
index 0000000000000000000000000000000000000000..57a4b161e059e492ed9d7fe2cf62c9145def4c06
GIT binary patch
literal 17895
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%0DS9HMxY5
zK^$p(2zgwSk%1SSR6&-4M(P+Dgb;kslGLKalKdieraVRlCr}EctoO#qAc|}VxUc~A
z(-;}}5SD@pSw;p#D#6jfV`LBlxf!*NU}OMycEVugGdPr?!$gb>?BI0bpT@`_rr`;#
zHIP+UGcquP+m{x|jRZ&tBDW`@BFH8{g}9jVnF^3f8b(G2@!Z7hROkG><irwCrwi1X
zDoM;MDQ094MRf!u_k-M!o?61lpoYZ_SZriu5GzhCfz>3SLB1kT>kBlNErL0q0BS8T
zC#Ix;EQi#ZVE;p1uNegj8O$!KHAtHXvU|XNday7@CNzzJv_jnniWhxY+OcM2V9!V_
z_DiiO0gtprF*2~^fjJ_uN*dV>j127QsU@HW0wV*e0(kgvB<JUqBxdFnGcrh{I4UEt
zC>T_r<RzzCgZv_hk=Pg+I1^J+!cvP$K+Pcb#1!y|J0k--Xk0HC6zqa9M}a*NoC=z#
zK*}LtHN2oPrId8&U<V@uj31I%1dcl1;?xpQ8wFC=fdU3ItX)81%ED-C$H>TllH8!)
zMA88jfd(!(u%JSW4BQ}R7VCqWd7xfPdTI&85r|$3N;-n-!)g?0oDx;DUwJTih>(yG
zkQ&aKkwLZ?G>+(#pO+4^AJ)5tL?||oYJ$@n{+i92k%28ewZuEMl97QmIK(k1gpq+Q
zwXifXr<jp}+11a5k%1#UwImEONQyG73QgKb!3h-sg}<nV3vy7v{lT3Ao{@l>$E>00
z!pOkPsLKc$89@ys=YUX1D2aiF0gwjU;rUQlLla{lkCA~RC$S{6q!ctk04e;y5ew=h
zF*0zL<Oe0DWF~@=IEw~&@P;!dKQA4sp1C+PkCA~nIlmY*idzU8v}H{!Nz5|>m0$Vg
zkiY<ytHq2A5y&|N=5=t8Q&yCNvUPfD3CI>k25o|tz>9ioMh0$Z_JI`iu*?I?EGUB>
zFbBJ!)M>%s<})J$b3SM=0NN?b%-0Vn%FHVXE-6Y)%(aHqv#7$14D1CUMLBtBB_J$g
zgfTLRfSd>Ez!$sa7r};tLDB12PykEVpaDqG=oupeYKZ}viDb)!cDYe}1G6NGkwFra
zSTggn!DH@@c`2^2G1p>HZw;J_p#3C9h6S#mdJ8lafv6O%6hOlW3XBSnVIu`bg&^px
zm;$sl!swZ&kdj)Gn3+?opbKiuq(YiZj1V@ok;4d64sK4tdFZl5sl_neP~$-&Fjb5U
zvKlThfSjSA9%f|FKu#b~QKT#h6#<ut{NM-*22I|C6eWU2(b+UyT)aTpl?PNaq*lQ4
zIiw2)&Nk34DI)_<5~QyT&AKST4@*p8Xk8jmuZYk{G&@rvs0|029s##hz_w=QmE~ur
zLg$ttRlHkba!GzsB|B3YBLkaHetvdo0VBf<WZy$IL3(u_iFqkGsl_S~mB?)jXpkTU
z5{gF9paK@<(MalH-bE6E8sVInlM|d-l4{M)RL;ntis2z_ZewJS!>^7(kzotNRt5$J
zUIqqG7ny;PVFv>P0~5ne1_n?U56<7iz`(GV0koio0o2okiyvfQ0QEQF{38qupl%GD
ze~f_v)Wb&MpJ3RH!as?|KZV9WjmAHN#y`t&j)8$ekb#lmJi`SBMuv+F49sg7*cb#E
z7#KfjZD(NA+ReZext)P|D+7zxZU)xK?F?*N8Q2j_4g`}E!Q?_Pxe-hrE$yugyjnV2
z8Tg<^`R!)lj}&1L5MdD7&LCpNqRYI4K~$1uCxaL>LpVfET!cXqB*&`D0+M4zmXj7?
zkOj%H>9T_4*pTJqMHm!8a_qWnAUSqqIb{(BRgfHqE;~q$16fX8gh3M|$EnK!lH){{
z(-vXS1<7&g3V;peLYCAQVK4+qa_b6!P31<GG!|hn1xfPg3V@B}L6$TZVXy>A^6Cn3
zg6!l)mb4aOumwr-=?ZXxB>5nc%x3(e`~uvI7%WBkcQM#AFo-ZX2s!UyaIq4Q6wnpr
z-@zcdlfjjV;Q#~wHU>AXEetG@0y`PpnHa)b_!*b~Kc=;f!9!~|gJ-1H76z~F4BlHA
zd^R#LFt9LOVqjoc#-Pc-z@W{*!XU}O&!EI0#h}cf%Amqvz@W-t&7j8M#-Pp+$e_y*
z#-PU#&0xro%wWt=#9+cu&tS^X$6&@Vo57r66@vxCb_Pp^V+>Xdml>=X9x>Q3yl1dw
z_{U(!$jxBSD8=BwsKMaKXwKlo=*r;C7{cJfn8e`9SjgbUSkK_j*vH_(IETTDaT$XT
z<8}sL##0P_jMo^v81FCyGCp7kVtmgK%y5~3fng1UAmerhd4?+tR~ZBt=QG$cTw}P-
zzz<5l3^y2Vg4XFUeqgx8u#bTeECx#PObp44y$rV*b~7+D6fxE@++n!Oz{1eSn8a|8
z;VuI!!zxBMhWiY68Q2((F={b9V7SY`&hUtlkKrN1T?P(@e+-`(9x>cy;AE6yxW@39
z;VuIgqdCJ)h9?Yn8Mqlk80IiMWw^`0!&t~r&+v@lE(0%PA43wubB4PNd<-ub7#MgM
z7@_vRWMF1^#lXN|#lZBRaXy0pJHr-shS%&21?&uO*ctfoBSr>>Uko-3OrT*eXwL0q
zU}0coU|>3=wVS~=Qpj&Rga1|rFGL0m0HuSS41tUcKH57Of*2WQGMH)aWC&(tIKbfK
ztFw(EL@0C{L)c6PSx~Cb*~t*j#1O8vg&_bWr2|QL%l{t-NrFU$BA`jk3CxRx@pdvq
zF@yDafyGf(MdMHf*A3PagF_WuH&|6H4pnh5aj>d*7!S=|sHzfhsDg`w%}OLn6)qd$
z;$X9qaF_)b2dhdZN)@i~g1Z;5S#UeRs&IuWTpX+li;X)OQWzO_GNd9UFDqE`^7GXK
zB^#Zc3~8W336x^IbapbNgE`w6GC)biOGk4jLnaHu^8bfHWf3#DEXrb#VqjnhW8h_o
zWRPHpVK8NgWpHGOWAI@}V2EZ&Vu)i%WoThYV_3zI&TxStgW(%PCZh~P7NZkGHe&`u
z4r3ofF5?!4JjPoL`AiH91x#uTg-kvSMNCBurA$*8%9u7Ylr!yPs9-wCPzf$iv=~?z
zOc~S|-ZNZfU}D<Lz|HW1;Ufbx(-a0RhEEKi8JIx%3tF;(@~$WY>mLRsc7`t&zZjVQ
zFo9UV80;AsK|_R)Y{@i@frEjIfq^kXYYPLrw$3hwECvQ>tY-V^9%r=E+QPsK72m;-
zvyCCwibZ<|L!K3@4v1uvWZlM)e}JK26GP!PhN4*vA_#%vZ45;-8Du~LB?lM^tk`!m
zl!A(MK1ufN3}sfVl5FT&;Q}zNY}**HX@%PgHUex7H{TA1a=+yaHCkI3DnM3(90is>
zz)*nVD=T&phAMtZ_H7I`A`G?p>DfCN%B?uG(DiI%s0T@KN^)#tsNtJFi-A{!p#frt
zge1#0h8nO$z9i>1hMHuMI8p%WLW(2ZZ45Q*;T2aHgD3+7LoI^{Lmh(zLnDJWLo<UR
zLkojBLmNXRLkB}LLnlKKLpQ?|hF*qw41El18746tV3^Esf?+DdYli6z{~2a7N-)f3
zRAQLJsKYRi(UD;hV=%)KaKfl!;9*E+;Ai;GaE^hUVIG|Injwtg2g6SWc8329P7J>o
zell<{N-$_L{AT#cz{#M^sKM}u;U@zNgCV05!(WDf46F?1j4}-W8U8V_fzkvtDKRic
zFfuTl16NWJjEoHD7?>DD7+n~d7=AJ^gR2cO1}2CZjLa}I7?~N^z!iuI1IK@cNCtLr
z1yTU6K(g5xve_9**%?Y17$g)Wr2a7^gGE5%KNv)QfEs<E5o|~rWi({qU|?rpV5ryH
z!oUSei%lqLlpz%q=i0DTYsCUevO3!snypyDF%60=L`<`R5(Qd>3V|ZO1}u>ejY^n3
zXi*8t_gbJV!?2P;gkcqf1jAYeb%yl}h721STp2bq_%m!_h-BEtkioE%p^9NQIC?x7
z*csFrg27S2!eGeY2@ZBv23H1CaHOz-JO>MGhI&R;NMJM6GqOPfn<1N#9UR!8T&={w
zj6Fa>!N<VB2MRtW&@>1n_!#0LH7|p(mi9J=7M*PjE!!AcK>^~W2}+$z;G&ERRCq8P
zU=U<D2zD~4s9|6bhC51_k&EFfC<QPGGjfB99|l1NCPp4m@x#Cfnzn#g#;C=>!NAAB
zz|bQo@z_p#3qzaE7KXO;9SrT3EZSQbI&`)$bbxtm5-cJNo%uT$y5Wp$kn$Z2?K>EH
zK$;+|Yza1~IwV%IC5H$@rv%3ihF*RNj`ST2y*n8CvMsqp82Tl+vMqTectjXFcQ8x@
zv34-@B76ynxMK_~3?~?b7)~-MFq~pAXE@E^$8d%rp5ZJ*3Bx&t8itDuZ48&ep%BBs
z3Gxd(6nYr>8Sa8Zp@&g`;VuIc0}De3qaed|24)5!hAKuOhK~#^3<?Z6jKT~b8Q2)&
z8FU#%7(Oy^FqAMzFp4sKWZ+_`VGsa^8xI2$XaWctZUGD|4BQM14Edl643?Ii{6IV%
zXv%g1r)(eHZ48sFSS49OU6IL53|4G>mh6&jI~k^c>bF2f1}jcUPG|#43B&@op!}@3
zB-lZfoFvyyhN(;p$(HQP|KE~e2L%nJU9AT8>U9P_h8qmB3^y6n8E!EcG2CS^Ww^%>
z$#9<`li>kF4#OjOutYKlFp4vL2Iqu)cmU-yN<h<YKBFW!?eZ}sGD<OAWngBIWe8%F
zX1L10!l2IJ!6?J1z`)92#9+&)$f(4?#$d`|#i-2ik%1jvpg>fqz*VV23lvobrvD7i
z44g;>iW5776FZ|UJEIyiJHr=H<5PoyiBX+V0}{FnZVYUo#wP=ZraCC$XM?;AN%w5v
z*nA20mI4Da0|NsG+%p`EnhYPo@*Ip>(3Gytr~@&R$)14?oYF68Z(=B1#=xm-#k!n9
zQF{|Z@iGQ3Nfr=K7+h0=OB_&jWW}ljmt|Ydpr8ZO$hMq87+jsQgQ_L4QZ`VTCdn$v
zhE{iJY3pobm}beLwS|ELR20Ih>thUZ=t2h=vbQnRSaL0A&}T8@5#TiA73FD{;K&x`
z1(C^?Tu2%uxOOm<LuxGvE>P$|5(T8r`oO@>@R5O+;WL8>!xsi=hVKlD3_lpO8GbVu
zG5le$WcbJ6!0?~Jjgg7Lhmn~fjFF8Ymywg9l#!RAgOQJ6F{22>GDb0mRg4l0I~k=J
z&NIq_L;C=OFas9@GdRJpGDyH#iVR$gy5JhfjDeX^kKr5x8-p{P<-@?msL$|^ft_Ii
z12dxmI7cmG&}1}ZxX!@Cu!=#I(TL$Xc-Z3-JRUDG8bcH1B}Nl)qGVvW#AwQJ4jkW?
z7|j^YF|aUbGc1R?C5)j4YHuz>D!9-F)l{*JOyHcnlR*+{FQ~%=s`<b!2G@6B*D*3P
zu!CzpSq2VX-anweQUNayg#OFm!_JV+{D(oCnSl{B(FsjV77T1)N1vckVuGX^Pzk_^
znQBmkps9v)IfIP^JE+~m$!E#AoI#Ssj9Y-yj7OBaU4lIul#tl7lPx*5wlKhSOK>8R
z5GNuDMKOpmFfghxursPM@G`11h%jm}NHc0PC^G6WXfx_F7%>_!STY(hI4~MBxG|bB
z_%NC?gfUt%#4*}26f)W~^f0<GOlEXtn91nDFo)5LVF9BL!+J)4hNFyuR7pmi49tuc
z3?CUd8K%Kma~Ood35uIx0RulcLGds!Fr0uVs1xu6bpoECPQVk?33!5<3r|o*jF5yJ
z$B+e1M(hmh86=_h5=urg3|#2R=nsP_GtVCeQD#vFMn+3UD@ZD0)Ma1;m&X~PatG9B
z1{EcsI)ociqa0(9(AvTP<v=5vWjTYTmaYz@p}mb^x+R-Hk{O2}!xS@4QI2*Awro*O
z5SeTVYF2S;ORykfnFSHc;EI(ojDeLgoPn1ynn8*&hC!b(k-?TRg~5?AjlqpEgCUeL
zn<14k7aVJ#idBb!nb8_tVcIfiFoKF0HU>uq6-FC|>kJ$WZVd8_whY(7wNeH=<TDuU
zz*(7<A(_#h;U5DN1201~qXRfAhcXC5%>#ufXe0xyijkRt37j4I8JPYu=!4sx1)u<A
zU<54)fCk-9$iO1QQuLtXK@K`72N85-ID!sTdh0^#?QAP9NiJw7LKH1bmoun{Fw|Od
zOK^jgq+9Z8N$`qtwr^vYVaYGSFTs`#4tE}0;qJsBz`(#*#K6i}%)rZ7&LG8D!JyAr
z%V5jcz~IQ(#Nfu*!Vt>X$`H@k#!$%E!BEE7$<V;q&Ct!*!!U_)0>dK4N#OYCW8h-|
z#fK9(KJplt86m7P1{rWA$j#8eAjIelt_Hdp*cn|IJ~Hq#*fONT<1G;$Z!yq#3uW+S
zbY=JnPLWIDF}M^SgA3p>I0G7klNf}d_99|%0i!)U216KF;4%20!I6Or)&wYJXDDD`
zU}j`wXUJw?_|Kq#XdQs0m=QAk46MkSKoveCqZ^|;BpI;TFbISC^h^h|k2COXVwfp3
zYa7Gt<xHEkw=vAIV$t5lFxLv)@B+27*g&l=&_ETV4TuG9XBAknOS11^m^YK*1c;t*
z#R2Ljg0dl`gFKT#5+nfb)N+FQ!#a|jpw2K@8Ax;!1ElW@RtC~%1y&}>sS8#H>SRi?
z!xI*#B<FDkZjd_{Y-5-Ws?U)mxg@!uk_#b{oJf+~lHA7`6hUrWWW}Q;$ph(%gJ_T|
zbab~dERI;tkN{GUX9a3)a3N_%Si1ybGB=VW!rG+}NggCgu(e!Tpk~gph~@td@L96)
zS#t1Ma)Da2pg`r3<bgI`JwYsJpz=!cf&*1Xf(;x3ys!`eb-pdxmNQ67K-`Eb!Lj`R
zW(hV4j$}(NK1&`xOFlkJ0hmQXl0tBcgrMV$1y;h6!cdENz@aIOVi6C>B0f+NDv2t=
z2eODqf-l)pfX`Bh&r*cXQVeF1gro%AA_=%fl9G~8i-bURsH7x{MM5BpM6|Xr@SsVE
zfGiS{5J|Qa+r%(af=fa`LJZ_X2_6YP2_XrQT@1@X6F##+V^l1ljvXTtg98Ht<8%fV
z#u*I!jI$U-8D}#{GtOnOVw}g|#JGsTlW_?{6yq|66vpKY1&k{h8W~qJbTh7Dn9jI?
zVL9VQhBb_v7`8BOV>rUNo#7<o4u*@2yBQub?qPVwxR2p2<9<dK#zTzkj7J&y7*8<D
zF`i^pW<15H&3KN{n(;iN1LFlo55~)k5sX(DV;Qe8rZC=QOlQ2!n8kR9F_-Z!V*%qm
z#(u{8jMEt(Fm7Oc#CVMH3FAq|r;HaEpEF)&e8G5)@g?I;##f9#7+*6nFuq}uWPHb@
z&-j7Ki18znCF5r%8^$k8_KaVdoEX0`B{F_z%4Gb()WrCUX$IpTrrC^tnHDiIFzshz
z0+n!#dJJ+5DGWS}(hTPqI2pPbco?O?thWr}j2;aC7<d>w8Fn*zGW=uUU|7xoYV3iA
zNRBW#FdBf%u!juFj1~+(8Mqnw7{VC6K<XIf7~H`9a!y8T22Dn9kUGW)1|CKqkU9n{
zMlD8P(0~kMKZ7}##mo2u$`WQugt8<VM447G`Y~*0U}2DETEghhu$zIEF^e&jF#yzs
zWXxp@VhjW|JQ)iZ{TYKm4PM5}3~v~N89p-bFkWML$r!@$k%5o#Cc`tvP==2T0!%gx
z&5U6T9~p$0>=_yu!x=s@h%h-Z)G|ged<3<{m=3_oVx|L(k&IEG4i3`+#%M^xnCSpx
z47fH0mB1zptPJ4rVPuAd4<j=J2P6bQEQs3~V_|M*jALL0*R@|5B>Dd_h_ExpgQp9=
z{AKV4kNlLX{b7({XUK+-KNyUd{xT?ot7NFqe+FsDP!VGSSVIBa2vDz%=|6)Yq|`^1
zW@d);`~EPPu`?9>Vi5fW>LW@p@Pf*E45heKgXcJ~sm88BnSlk_cm~i`@kGWXNKL}9
zf`JV*h{hnxXvMOd!6{NpSH5dI!wM^w<qTY)?)x@|Rgx?l7#JCt83Y)F8CEhthL)s2
znwZ!bn3*^k1ekajgqgS)M47l5q?q_X$(R8YC87+hjLD2C;2y0kV=4n^nv{V-mNAVn
z9Tb@ivWywvC}d`kV$1}0xIx24;-DZA2D!O_1st?a42<jyE7=$rK}#K>uC8QY1RG%v
z8fx3gu$qwpRNlfE954nqjKK+G@PHYhVh7T%mIIC0F$pnnG6^#XF^MopGl?>&Fo`kf
zGKn*oF-d^^0&1c$FqlJ=BO_xrV-Ca_%vB5=3_J`Bj60z-yjGxMp9MTS1gc=6<*5#+
zVgc6>PLO&QHbo>L$p)%rLm-oi%l}`183P_D0aY^`k{nP&{6Q?RAq7^Ppn4o6%>^1J
z0afh`x*!%*np=`nk{de8%?@Hi`{tmT%jN&iFaN)GH^Z7pX#uW`c2Smgp|vsz(h05G
z8P-`LO+;6~tU!#?B)~^$3aq$5?p_ZXc;*IKRl_%94g)7>Xxj?H7h$NKK97N0grOF!
zMt2*-hM5d}((NJ)8^Pn)+@OZ1B$p&~f_M4<IiN5Cc?n@(4Egqf#z{BKg1HFYt_7PI
zW`e}FF>D4U1aSSsFo{8hfq_Yufs;v&L5oSA!JJ8f!G%eQ!JSEkA%IDhA)iT&p^r(O
zVFr^X!%8M?hBZt&4C|Tn8ICg<F<fFYX86ct#_*fToRO8uf{~laicy@&no*v~mQjt#
zj?s|Gfzh7Hk<p3Ci7}DMl`)&ijj@!;ow1t9ld+x2i?N@{mvK6iALCr60LIl!fsE^z
zf*5x&LFQ%`F$gedF-S48GF)ZgVCZ9zX3S+c$H2{y&tS`#2d)`@Gq^D3gG=&{41VD9
zn~O1<!2u%1n8@G-5d$StXcA^%+{swLa2=F`7<V!jGF%4@sxt0mEMhDM4K*<CWGrF0
z&cFiF!C1;z%)rXP$+&^BjA1(i8$$qNCSy6nb_RBa;|!k|D;O&oIN&2;U{#E<Fjb7P
z&;f>E2BE*uLiUUPFHrYJ5L{e-`O6>&&f;GTeljqDCA8TYtJoR7fSb<+><rn$f<G7p
z{xEQ$i1Gel5MW?rtY)lXU;-_-V9<va2dtpU*$v<oB%nEX@Sqt}7*Zx?g@yoll?h`l
z12bbCNHt?UqdWrx1L(L7SteFSIW|tFBBoNNVg^aZi3|)3QVcANlNcBoCxgj7VDbW(
G`~m<P6P$|x

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/utils/Config.class b/Code/out/production/Code/utils/Config.class
new file mode 100644
index 0000000000000000000000000000000000000000..8fe4a9607f101d9e23cd6a070d821c0e98d7cb79
GIT binary patch
literal 681
zcmX^0Z`VEs1_pBmRW1f*1|@a|Wp)M?Mg|cde@B=2U}sl9#~@Gtc)w6zC)XfG21ZXt
z243g<yyB9?yppiQoYGWg1_lOhMh3wk*8tZL&k#?4Kd54mgd`(_sEezcW2jF^ypN}!
zcf7M>fTOc#NF*}@1LGG)24NJ*fOt<AA6Jk*Mn(o9G%1%zKadP3BZD|h#>F+v)7cen
zCX!uH8H9mJj0_@Z+5+OCMowX5;PCWw^Yrr!0a>mtz{tQ7?CR>m%)r!M#K^#AlbM%U
zV#mn9tf3jk$iU*9pOVVR!0(fpm+DuVo0M7<l9-f}%E%z(lb@WJ6P8$%3F1QqSxPc8
ziy0aCd`e3)bBgty^YhX&)2$g9xPtRbi;`2_GC?}IA;NlDiDijA43Z2|j0`-;>KPdX
zKvMcSiFxVz{z+M>$t4Vm3``85@Ze&QWME-nWng4rV_;xlVqj;GWZ*#Jb23OWa3S%z
z86+8akodd|k_>!Ee0~N=1_2~KNWCBuUx-1HK^TcI!XU{Yio_RVkYo@?;!7|vGBASt
z#K6cP&A`B*59Tv4uxf2*VB83HvJ3+Q0~-S)0|NsygDe9B0}q(Z${@!e&%nUI$e;jL
Gr3e5!rE+xu

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/utils/Distribution.class b/Code/out/production/Code/utils/Distribution.class
new file mode 100644
index 0000000000000000000000000000000000000000..9d8983e850985ead7718ebd69a31e9a153c51803
GIT binary patch
literal 462
zcmX^0Z`VEs1_pBm2`&Z}1`$pMW(HAq1~GO9aYhEVqQtzE{9Hx`A)l<ovPAvTlFS_a
zAh4J<BLkaFW?p8A9U}v?hGrNe1B-KhN-84*zfWdfs$XetQfg61Vp2{jNOOL2Voq3M
zQ6`8F6=W&N$Sh`L5b*(-S*-7pSzJ<-nN(VmnV)CP$iS1HTH=>lQ4*GzQ<@64z=e^4
zvpBT`VmTv&s0OBsK#t%F&Mz%WPIb!!SuBWbsvgJ(JPhm%96SuH3~Y=HLYOu)G6;ZF
z>E|TorR)1AWu+#UuqZMxGq5l)FfcN(fb=miFfcPPf{bBcWZ-0AV9;k^WME`qU|`kS
z&cL{lfq{XEfs28Gfej+az|FwGzyoFTFz_-kurM<4G4O*86krg98e+%5#J~j7rKP=<
kfeB#>7g&^=ft7&=Y?2t5&&B{Y38WtEB#;Ayz%~m502``S`2YX_

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/utils/NormalDistribution.class b/Code/out/production/Code/utils/NormalDistribution.class
new file mode 100644
index 0000000000000000000000000000000000000000..542305a4a4e0a329985bbd25d85592c828cc6fe2
GIT binary patch
literal 884
zcmX^0Z`VEs1_pBmV=e|B1_dq#ZU#jVp~TLh%*DXMpaSBkax!o;sDZfZAeIJ*&}3)O
zVrS51WMIinP0V9tV02+*U@I<3aY-#>WMH$&%*!mXV`N~{aB=a{3}a+qan4UkWn|#@
z$;?ajE6q(xEec6Y%1LEp5c0`SPRt2QEXoA&p@J+W8JWe53{pO&C7C(J`hNLExrsS0
znZ+eVnMtK3nfZCvj0`Nrsi`T942)ik3_R(nC4Q+DC1Hs<rKyYz%o>_5j126>sU^N(
zr?F_bfSkZtoLUkLbs$%8erZv1s#_+=3F4UM>t!XDCGs!`FzE0wNHfUrFvv2<Ffs^$
zMD;;#(ho|^OUcg#snF$N&|}c&VK87Y<Y6#kkm6zBXW-*u;AP-rWRL)<#pZrS1|f(P
zvZuf<2ZfaeILJWmg;>MLAgbYmZnrhaPi#eCcYuNsL!Oa=Coi?4#67XJxHvO0k3o@v
zn}LUcfq{vE3FJC3i=Tmyfq{XAfssLgL6CuwL5P8Yp@e~zft`VYK}Ksk1EZGuHU=gw
z&20?KTDuuoBE?v@Gq7%BVA}}REzH2cAjZJTz`y`X8{7<>3_J{c47?1|415eC3=9lf
z3@jjX7(^Mw7(hS<Y%e2N3}iDim?h32!NAJE$RNoe1$BW9*hLHsLRwoG*taooXl-HO
z%+}h%z?HlnZZ8`H$Q&WCJv>l0#2!Xaj6qGZV_;?g*}|r!zLkLs;c6}hCaBxR!6t}-
n`D}2PvO!(S2#R=YW^tmMCB?wXAdSN;kY5=Y7#ZZiu9pV@dr6Rr

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/utils/Triple.class b/Code/out/production/Code/utils/Triple.class
new file mode 100644
index 0000000000000000000000000000000000000000..c71ec368ddfb5c592f2c7138f005235d63a4f60c
GIT binary patch
literal 1505
zcmX^0Z`VEs1_pBmLoNn31}#noRt9Ylp#vgx*%|cM8T1($SaMR+N*Ec0e6kYD67_Qu
z^V0SGld@8iORO0gID<3O^Abx+i&7aGm_vN585!7eGgDG>z+7KzMh4cR%=C;BkYo@@
z(k3%6v&4>(!BPX$G-5<F!x$M@obyvs85#I}GV@aXN^_G^i$W5UKsE~b<R>TQge4Yb
zg7{EDmXeIjVnzl&pVE@doMQcuqRfJvRBJ{CF;vBs1*uRCk|-)|LVT=4e62%*tnI8B
z8F)0{T#!rH(^E@)z=0#8p^52yMg~?5O>m&F7sC{aV(~c0C^nGEAO>f8YKbp22tnFG
zfyh~m5M$E_@wEmi<Va5~34#PJNF6A6If~&zY#Jd!U}XU|K314c^Ti?-ghk8_Q!66_
zS8#r5QF5wVCMeLkAt9;<N*p{4{0s&>4D1XXJPh0*f|r4Vk%0#}<QW+RKq`@w5hDY$
zhGrOpA_FS}8v_FaGXoRI1O`S1P6h@BCI&7BCXiupJ`V#E11|#yoX^L=&cMjP&mh3S
z#30DPz%Yk_iGhWIfk8xTI|HMZ_ErWaEuF0l%v!oz8CW)g%@<-|U=U+qWnf_7WME<7
zV&G)pX5eGsVGw5EWe{dyV9<i-XAof!WdH#YsCyU~M8Ga#0+|kW12cmdih6O7at4rk
zE(S)hDsBdldqFyR8Tc5Op?;EJU}TVFkb=6{k%1AcnpJBH1Jee$6WPFm0$?ZcfZ422
zCxI+Qh=44G1eG)cBZCZsEY#R21||lOQ`x|QfbcpfKp7ZB8CV&_z-Eg<R6)&VU|@rK
z7i0@U4rB{N4&*h6eR2$p4DwjL!Hn(=Nw8H2M}tBZWC211WC6rj1qMb2MeN>SM)!s+
z11p0Z*ldJTL1u%T$_-8>AX^Y}AX^}EAe$lfDKRiIC}Z^o3%WNH!B&B^GB6N|4HX7P
v2373dKuU;^*idC)Wl#f~jc_W=8<50~-5a1p1<NRE3{24ErOu!M&N`X^2guT#

literal 0
HcmV?d00001

diff --git a/Code/out/production/Code/utils/Utils.class b/Code/out/production/Code/utils/Utils.class
new file mode 100644
index 0000000000000000000000000000000000000000..85d4b021f8cde4f89f95ffb1424315aa9edb05a5
GIT binary patch
literal 2428
zcmX^0Z`VEs1_pD6a4rTB1}hE*Yc2+E1{)Az%g$iO#lXs7&%xlp!QjZnAk5$d;ybf5
zxNtHEGq{2jxq*b;LBbv&F;5N#FAfH8b_O4I246-7*5DAwpb$m|A)l<ovPAuy#JqI<
z;F6-uymV_u24+`37e)p)o6Nk-5<5l)W)00SMg|t={FGEi27aH+yi~u^+@#c^ki?{%
zRFDz*$%#2(iA9+pK2(sUBqOt!k%8Bzv?Md9SU(g*S~D`p78m4XmiXl7rMs2pC6{F8
z=XvH8mn7yTr}`!4rZO^EXkfZW(<i?uT|coPF*zeuKRG`)H$SgfKR2-?!&o0=xPCxl
zW|1``18YHIQAsf)gK#va5sVD1V2c?URERT-BPTyE9pWT09~AFZ7NkPG=tYE4HkfX~
z6tS~rWZ(@hNlec6O)P*K&KaDUo|jlsT9nGj5JzU95N|m+aC|cJvLRk(%Pa<Q7#T#d
z*&M~lz>)`!Ey?uM5|F~+lEk7C$GjBRycCzzvdrYvVnzn;Vvrz&%gDe6w!w&zfio4R
zhLM3I2VrATYH?{!2_u7GdTL2XVo`c(2`qsyGN@s51!gcZGH}===RngeS8#r5QF5wV
zCMbn+fs>yeD5di-NH9n;GBE1$F!(X}^Drng1TZov5l&zreSwS&42%p+wst%W+6)Rj
z3_%RRj0^%GQ<3uz4}&O!7!N}TLnse}JV;p>Log46ID;4?17k2F1EVV=12-t$LNf)5
z3I0i0smUdb3>?Y%c_oRNdBuzj(#W27&PXf@PAx1=%}Y+T){J6gP)C-9=3h;$8308k
z#2#y;FocSLGCEs&YKeDhB_o4~h9;&8Mh3Rj!qUW?Vzkr&Ga!nQfg?S&BrGwfG?hV-
zL6|{=fq{XEffE!e3=9mMppal-U|?rp1jPgcBZCwJ1A{&TBLgD?0|Tqpb_T|cU=7j?
z3=C`#K?WHH1_mA|Tb4l%Y>YgE0s|9R^Hv5{24)5Z20bkyrfm$&Ga0183>M$r46Knl
z%tksaM%x+Ke3motfdsUK*g-t)4GatnEDRu9q!`#37#O%1I2pJZ1Q>W2<QRAv6d42<
zbQpxdHfu4kFbFX4F(@)9F)%U6F)%YIGpK-FqsO4iAjZJJpu@lf6;oqiU=V|=QfFX<
z%7IuKV0SYq{$b!^XJBQ}1bb79ffJONpkB#`dPQ7Ih+`WAix0@b+RR4UU?2GEfZWUs
zb~7K?#}W+e43Z3@3{qfsDuBhrp>ASl5CFTFkwFydIwl5?>p<ZM5m9GgLUM!-gDx~O
z3>lcfzGDYFf_V+touGh%M27;{GLSK#Skwat04IY!EIJsA7+4rs85kI{wRSLY`sr?C
z;5xv-y@`Qm8w2l52ChvEJU+`AB%s1O82GGMBv~M8d~~-l@PpL~z|;!(LezqUQPhIt
zR$FH~0~<&`C|n?MsmH+0z`&r!z{;S`Aj+V@Aj6==puwQcV921$;K-oI;K5+P5W--{
z5X)f9kilRA_DT!`CxavdGlKzx7y~1N1_LL9A%hA73xg{IGlLO0HbdZI3=G)}#$YcS
zGFU-%#4_+f)v+?9fztsqLk0sgg9+FaP?&>K5X4+{1{Ma0X&@Fvy*dL-JxC0cO7t06
z{(+pv&cOPgL4<*Yoq?O3ftvx8Y8b?jM8M*putuaMQwB3=H2z^=VqjrlVDJFNgRc%|
z*!nDI(1i=5M2{F$cn1R?C;~yD?}L<Klo&V|7#J)WSQ)GsL>a6ZWEgB1bQtUyj2Rpl
z>=+yw+!&leu4k}gU;_uN2{>R4z(E2EVmk&7a1etstp_wX-58h{AnI5doWX$zNv@#G
z1W^wPCWss;;evumih=nrgA6EG#Qrk~F))LJgBu)53>*yR43f~00A)S~1_lOhA;HZI
jJVHX783aIO3?n!vaWOD4Ffh0=urjzaFfv$x6T2k<f^5~e

literal 0
HcmV?d00001

diff --git a/Code/src/MixedReality_Optimization.java b/Code/src/MixedReality_Optimization.java
new file mode 100644
index 0000000..2a68030
--- /dev/null
+++ b/Code/src/MixedReality_Optimization.java
@@ -0,0 +1,224 @@
+import application.Application;
+import placement.OptimalRequestPlacement_Marginal;
+import placement.OptimalRequestPlacement_Overall;
+import placement.RequestPlacementOutput;
+import system.Network;
+import utils.Config;
+import device.Device;
+
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * Setup for Mixed Reality to test the placement of one request in different scenarios
+ *
+ * @author Klervie Toczé
+ */
+public class MixedReality_Optimization {
+
+     public static void main(String[] args) {
+
+        try {
+            //Parameters for the different studies
+            int numberOfFunctionInstances = 2;
+            Boolean usingUniformLoadDistribution = false;
+            int standardDeviation = 10;
+            Boolean linksAreLoaded = true;
+            Boolean randomStartLocation = false;
+
+            String appId = "MR_Service"; // identifier of the application
+            Application application = createApplication(appId);
+
+            //TODO Check whether this is still actual
+            System.out.println("Description of the experiment:");
+            System.out.println("- Number of functions instances: " + numberOfFunctionInstances);
+            if (usingUniformLoadDistribution)
+                {System.out.println("- Load distribution: NORMAL with std " + standardDeviation);}
+            else{
+                System.out.println("- Load distribution: UNIFORM");
+            }
+            System.out.println("   The (mean) load increases by 10% per scenario");
+            if(linksAreLoaded){
+                System.out.println("- Load on links: following a NORMAL distribution");
+            }else{
+                System.out.println("- Load on links: 0%");
+            }
+            if (randomStartLocation)
+            {System.out.println("- Start location: RANDOM ");}
+            else{
+                System.out.println("- Start location: FIXED");
+            }
+
+            //Determine startLocation = at which device the request is received. This is the placing device
+            String startLocation;
+            if (randomStartLocation){
+                Random randomLoc = new Random();
+                Integer randomStart=randomLoc.nextInt(11);
+                startLocation= "gateway_" + randomStart.toString();
+                System.out.println("Random start location is "+startLocation);
+            }
+            else{
+                //For this scenario the start node is NOT random between scenarios
+                Integer randomStart=0;
+                startLocation= "gateway_" + randomStart;
+                System.out.println("Non random start location is "+startLocation);
+            }
+
+            System.out.println("Creating the network to be used");
+            Network network = new Network(application,startLocation);
+
+            System.out.println("Placing the function instances");
+            placeFunctionInstances(numberOfFunctionInstances,network.getEdgeDevices());
+
+            System.out.println("Optimizing the placement of one request");
+
+            //Below are the different optimization objectives
+            OptimalRequestPlacement_Overall requestPlacementManager_obj1= new OptimalRequestPlacement_Overall(network);
+            OptimalRequestPlacement_Marginal requestPlacementManager_obj2= new OptimalRequestPlacement_Marginal(network);
+
+            //for each repetition
+            for (int a = 0; a< Config.REPETITION_NUMBER; a++) {
+                System.out.println("Repetition " + a);
+
+                //for each utilization scenario
+                for (int i = 0; i < Config.LOAD_SCENARIO_NUMBER; i++) {
+                    System.out.println("Utilization scenario " + i);
+
+                    //Reset the timing/energy variables
+                    network.clear();
+
+                    //Create utilization data
+                    network.createUtilizationData(i,a,usingUniformLoadDistribution,standardDeviation,linksAreLoaded);
+
+                    //For every optimization objective to be tested
+                    //Objective1 - Optimization Overall Energy
+                    long startTiming = Calendar.getInstance().getTimeInMillis();
+                    RequestPlacementOutput output_obj1 = requestPlacementManager_obj1.run(application, startLocation);
+                    long endTiming = Calendar.getInstance().getTimeInMillis();
+                    //Calculate and print how long it took to get the placement
+                    long executionTime = endTiming - startTiming;
+                    System.out.println("OVERALL OPT Placement request execution time: " + executionTime + " ms");
+
+                    //Evaluate the placement according to the other metrics
+                    network.evaluatePlacementOutput(output_obj1, startLocation, startLocation);
+
+                    //Objective2 - Optimization Marginal Energy
+                    startTiming = Calendar.getInstance().getTimeInMillis();
+                    RequestPlacementOutput output_obj2 = requestPlacementManager_obj2.run(application, startLocation);
+                    endTiming = Calendar.getInstance().getTimeInMillis();
+                    //Calculate and print how long it took to get the placement
+                    executionTime = endTiming - startTiming;
+                    System.out.println("MARGINAL OPT Placement request execution time: " + executionTime + " ms");
+
+                    //Evaluate the placement according to the other metrics
+                    network.evaluatePlacementOutput(output_obj2, startLocation, startLocation);
+
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static Application createApplication(String appId) {
+
+        Application application = Application.createApplication(appId);
+
+        //Defining the different parts of the request function chain
+        application.addAppLink("encodingModule_client", "decodingModule_edge", 200,250);
+        application.addAppLink("decodingModule_edge", "pointcloudModule", 2000,500);
+        application.addAppLink("pointcloudModule", "graphicoverlayModule", 1000,750);
+        application.addAppLink("graphicoverlayModule", "encodingModule_edge", 200,500);
+        application.addAppLink("encodingModule_edge", "decodingModule_client", 200, 250);
+
+        //The request chain for the placement
+        List<String> requestChain = new ArrayList<>();
+        requestChain.add(0,"decodingModule_edge");
+        requestChain.add(1,"pointcloudModule");
+        requestChain.add(2,"graphicoverlayModule");
+        requestChain.add(3,"encodingModule_edge");
+        application.setRequestChain(requestChain);
+
+        return application;
+    }
+
+    private static void placeFunctionInstances(int numberOfInstances,List<Device> edgeDevices){
+        if(numberOfInstances>=2){
+            for(Device device : edgeDevices){
+                if(device.getName().equals("gateway_0")){
+                    device.placeModuleOnDevice("decodingModule_edge");
+                    device.placeModuleOnDevice("encodingModule_edge");
+                }
+                if(device.getName().equals("gateway_3")){
+                    device.placeModuleOnDevice("decodingModule_edge");
+                    device.placeModuleOnDevice("encodingModule_edge");
+                }
+                if(device.getName().equals("gateway_5")){
+                    device.placeModuleOnDevice("pointcloudModule");
+                }
+                if(device.getName().equals("gateway_7")){
+                    device.placeModuleOnDevice("pointcloudModule");
+                }
+                if(device.getName().equals("gateway_6")){
+                    device.placeModuleOnDevice("graphicoverlayModule");
+                }
+                if(device.getName().equals("gateway_8")){
+                    device.placeModuleOnDevice("graphicoverlayModule");
+                }
+            }
+        }
+        if(numberOfInstances>=4){
+            for(Device device : edgeDevices){
+                if(device.getName().equals("gateway_6")){
+                    device.placeModuleOnDevice("decodingModule_edge");
+                    device.placeModuleOnDevice("encodingModule_edge");
+                }
+                if(device.getName().equals("gateway_9")){
+                    device.placeModuleOnDevice("decodingModule_edge");
+                    device.placeModuleOnDevice("encodingModule_edge");
+                }
+                if(device.getName().equals("gateway_4")){
+                    device.placeModuleOnDevice("pointcloudModule");
+                }
+                if(device.getName().equals("gateway_0")){
+                    device.placeModuleOnDevice("pointcloudModule");
+                }
+                if(device.getName().equals("gateway_2")){
+                    device.placeModuleOnDevice("graphicoverlayModule");
+                }
+                if(device.getName().equals("gateway_7")){
+                    device.placeModuleOnDevice("graphicoverlayModule");
+                }
+            }
+        }
+        if(numberOfInstances>=6){
+            for(Device device : edgeDevices){
+                if(device.getName().equals("gateway_7")){
+                    device.placeModuleOnDevice("encodingModule_edge");
+                }
+                if(device.getName().equals("gateway_5")){
+                    device.placeModuleOnDevice("encodingModule_edge");
+                }
+                if(device.getName().equals("gateway_2")){
+                    device.placeModuleOnDevice("decodingModule_edge");
+                }
+                if(device.getName().equals("gateway_4")){
+                    device.placeModuleOnDevice("decodingModule_edge");
+                }
+                if(device.getName().equals("gateway_6")){
+                    device.placeModuleOnDevice("pointcloudModule");
+                }
+                if(device.getName().equals("gateway_10")){
+                    device.placeModuleOnDevice("pointcloudModule");
+                }
+                if(device.getName().equals("gateway_0")){
+                    device.placeModuleOnDevice("graphicoverlayModule");
+                }
+                if(device.getName().equals("gateway_9")){
+                    device.placeModuleOnDevice("graphicoverlayModule");
+                }
+            }
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/Code/src/application/AppLink.java b/Code/src/application/AppLink.java
new file mode 100644
index 0000000..dc5efad
--- /dev/null
+++ b/Code/src/application/AppLink.java
@@ -0,0 +1,56 @@
+package application;
+
+/**
+ * Class represents application links which connect modules together and represent data dependency between them.
+ * @author Klervie Toczé
+ *
+ */
+public class AppLink {
+
+	private String source;
+	private String destination;
+	/**
+	 * CPU length (in MIPS) of tuples carried by the application link
+	 */
+	private double tupleCpuLength;
+	/**
+	 * Network length (in bytes) of tuples carried by the application link
+	 */
+	private double tupleNwLength;
+
+	public AppLink(String source, String destination, double tupleCpuLength,
+				   double tupleNwLength){
+		setSource(source);
+		setDestination(destination);
+		setTupleNwLength(tupleNwLength);
+		setTupleCpuLength(tupleCpuLength);
+	}
+
+	public void setSource(String source) {
+		this.source = source;
+	}
+	public String getDestination() {
+		return destination;
+	}
+	public void setDestination(String destination) {
+		this.destination = destination;
+	}
+	public double getTupleCpuLength() {
+		return tupleCpuLength;
+	}
+	public void setTupleCpuLength(double tupleCpuLength) {
+		this.tupleCpuLength = tupleCpuLength;
+	}
+	public double getTupleNwLength() {
+		return tupleNwLength;
+	}
+	public void setTupleNwLength(double tupleNwLength) {
+		this.tupleNwLength = tupleNwLength;
+	}
+
+	@Override
+	public String toString() {
+		return "AppLink [source=" + source + ", destination=" + destination
+				+ "]";
+	}
+}
diff --git a/Code/src/application/Application.java b/Code/src/application/Application.java
new file mode 100644
index 0000000..547fba3
--- /dev/null
+++ b/Code/src/application/Application.java
@@ -0,0 +1,83 @@
+package application;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Class holding information about the application request chain and service placement of the different functions
+ * @author Klervie Toczé
+ *
+ */
+public class Application {
+	
+	private String appId;
+	//private List<String> functions;
+	private List<AppLink> links;
+	
+	private List<String> requestChain; //The list of components that are part of the request
+
+	public static Application createApplication(String appId){
+		return new Application(appId);
+	}
+	
+	/*public void addAppFunction(String functionName) {
+		functions.add(functionName);
+	}*/
+	
+	public void addAppLink(String source, String destination, double tupleCPULength,
+						   double tupleNwLength){
+		AppLink link = new AppLink(source, destination, tupleCPULength,tupleNwLength);
+		getLinks().add(link);
+	}
+	
+	public Application(String appId) {
+		setAppId(appId);
+		//setFunctions(new ArrayList<>());
+		setLinks(new ArrayList<>());
+	}
+	
+	public void setAppId(String appId) {
+		this.appId = appId;
+	}
+	//public List<String> getFunctions() {
+	//	return functions;
+	//}
+	/*public void setFunctions(List<String> functions) {
+		this.functions = functions;
+	}*/
+
+	public List<AppLink> getLinks() {
+		return links;
+	}
+	public void setLinks(List<AppLink> links) {
+		this.links = links;
+	}
+
+	public void setRequestChain(List<String> requestChain) {
+		this.requestChain = requestChain;
+	}
+
+	public List<String> getRequestChain() {
+		return requestChain;
+	}
+
+	//Function to get the network size needed to come to the target function (i.e. on the incoming edge to the target function)
+	public Double getTargetFunctionNwSize(String moduleName){
+		Double nwLength=0.0;
+		for(AppLink link : getLinks()) {
+			if (link.getDestination().equals(moduleName)) {
+				nwLength = link.getTupleNwLength();
+			}
+		}
+		return nwLength;
+	}
+	public Double getTargetFunctionCPUSize(String moduleName){
+		Double CPUsize=0.0;
+		for(AppLink link : getLinks()) {
+			if (link.getDestination().equals(moduleName)) {
+				CPUsize = link.getTupleCpuLength();
+			}
+		}
+		return CPUsize;
+	}
+}
diff --git a/Code/src/device/Device.java b/Code/src/device/Device.java
new file mode 100644
index 0000000..191f842
--- /dev/null
+++ b/Code/src/device/Device.java
@@ -0,0 +1,62 @@
+package device;
+
+import system.Location;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Device {
+
+    protected String deviceType = null;
+    public static final String EDGE = "edge"; // edge device used for orchestration or computation
+
+    protected String name;
+    protected Location locationInformation;
+    protected double mips;
+    protected List<String> modulesPlacedOnDevice;
+
+    public Device(String name, String deviceType, double mips) {
+        setName(name);
+        setDeviceType(deviceType);
+        this.mips=mips;
+        modulesPlacedOnDevice= new ArrayList<>();
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name){
+        this.name= name;
+    }
+
+    public Location getLocationInformation() {
+        return this.locationInformation;
+    }
+    public void setLocationInformation(Location locationInfo) {
+        this.locationInformation= locationInfo;
+    }
+
+    public void placeModuleOnDevice(String moduleName){
+        //For now we can only place one module one time
+        if(!modulesPlacedOnDevice.contains(moduleName)){
+            modulesPlacedOnDevice.add(moduleName);
+        }
+    }
+
+    public List<String> getPlacedModulesOnDevice(){
+            return modulesPlacedOnDevice;
+    }
+
+    protected void setDeviceType(String deviceType) {
+        if (deviceType.equals(Device.EDGE))
+            this.deviceType = deviceType;
+        else
+            System.out.println("ERROR Device type is not supported, see Device class");
+    }
+
+    public String getDeviceType() {
+        return deviceType;
+    }
+
+}
diff --git a/Code/src/placement/OptimalRequestPlacement_Marginal.java b/Code/src/placement/OptimalRequestPlacement_Marginal.java
new file mode 100644
index 0000000..989179f
--- /dev/null
+++ b/Code/src/placement/OptimalRequestPlacement_Marginal.java
@@ -0,0 +1,358 @@
+package placement;
+
+import application.Application;
+import device.Device;
+import net.sf.javailp.*;
+import org.apache.commons.math3.util.Pair;
+import system.Network;
+import utils.Triple;
+import utils.Utils;
+
+import java.util.*;
+
+/**
+ * Created by Klervie Toczé
+ * Request Placement using ILP
+ * Optimization objective: Marginal Energy
+ */
+public class OptimalRequestPlacement_Marginal implements RequestPlacementLogic {
+
+    Network network;
+    List<Device> edgeDevicesInArea;//edge devices that can be considered for placement
+    Map<String,Device> edgeDevicesInAreaByName;
+
+    private String startLocation; //The device name of the start location for the request
+    private String destinationLocation; //The device name of the destination location for the request
+
+    public OptimalRequestPlacement_Marginal(Network network) {
+        this.network=network;
+        this.edgeDevicesInArea=network.getEdgeDevices();
+        this.edgeDevicesInAreaByName = new HashMap<>();
+        for (Device device : edgeDevicesInArea){
+            this.edgeDevicesInAreaByName.put(device.getName(),device);
+        }
+    }
+
+    private Triple<List<String>,List<String>,List<String>> optimizationSolve(List<String> requestChain){
+
+        SolverFactory factory = new SolverFactoryGurobi();
+        factory.setParameter(Solver.VERBOSE,0);
+        factory.setParameter(Solver.TIMEOUT,1000); //Timeout of 1000 seconds
+
+        //Get the names of the function instances
+        List<String> functionInstancesLongNames = new ArrayList<>();
+        List<String> functionInstancesShortNames = new ArrayList<>();
+        functionInstancesShortNames.add(Utils.START);
+        functionInstancesLongNames.add(Utils.START);
+        for (Device device : edgeDevicesInArea){
+            if(device.getDeviceType()== Device.EDGE) {
+                //We are not interested by adding end device nodes
+                //The function instances placed are accessible via Device
+                    for (String module:device.getPlacedModulesOnDevice()){
+                        //Note: the dash in between is to facilitate re-split later
+                        String longName= device.getName() +"-" + module;
+                        //Create a shorter name - Assuming a node name of type "gateway_0", we want the first character and the number
+                        // followed by the two first letters of the module name
+                        String shortNameDevice;
+                        String nodeName=device.getName();
+                        if (nodeName.charAt(nodeName.length()-2)!="_".charAt(0)){
+                            shortNameDevice= ""+nodeName.charAt(0)+nodeName.charAt(nodeName.length()-2)+nodeName.charAt(nodeName.length()-1);
+                        }
+                        else {
+                            shortNameDevice= ""+nodeName.charAt(0)+nodeName.charAt(nodeName.length()-1);
+                        }
+                        String shortName = shortNameDevice +module.charAt(0)+module.charAt(1);
+                        functionInstancesShortNames.add(shortName);
+                        functionInstancesLongNames.add(longName);
+                    }
+            }
+        }
+        functionInstancesShortNames.add(Utils.END);
+        functionInstancesLongNames.add(Utils.END);
+
+        //Create a shorter version of the names for the requestChain
+        List<String> shortNameRequestChain = new ArrayList<>();
+        for (String longName : requestChain){
+            String shortName = ""+longName.charAt(0)+longName.charAt(1)+longName.charAt(2);
+            shortNameRequestChain.add(shortName);
+        }
+
+        //Input variables
+        //Create/Get the coefficients for the lambdas values in the objective function
+        int beta = requestChain.size()+2;//Add to be +2 to be number of links between instance + 1 due to constraint 6
+        double deadline = 100;
+
+        Problem problem = new Problem();
+
+        //Decision variables
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+            for (int j=0;j<functionInstancesShortNames.size();j++){
+                    problem.setVarType("x" + functionInstancesShortNames.get(i) + functionInstancesShortNames.get(j), Boolean.class);
+            }
+        }
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+                problem.setVarType("y"+functionInstancesShortNames.get(i), Boolean.class);
+        }
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+            for (int j=0;j<functionInstancesShortNames.size();j++){
+                    problem.setVarType("o" + functionInstancesShortNames.get(i) + functionInstancesShortNames.get(j), Integer.class);
+                    problem.setVarLowerBound("o"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j),0);
+                    problem.setVarUpperBound("o"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j),beta);
+            }
+        }
+
+        //Create the objective constraint
+        Linear linear = new Linear();
+        //Travelling part
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+            for (int j=0;j<functionInstancesShortNames.size();j++){
+                    linear.add(network.getLinkMarginalEnergyConsumption(functionInstancesLongNames.get(i),functionInstancesLongNames.get(j),this.startLocation,this.destinationLocation), "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+            }
+        }
+        //Purchasing part
+        for (int i=1;i<functionInstancesShortNames.size()-1;i++){ //Exclude the start and end nodes
+                linear.add(network.getInstanceMarginalEnergyConsumption(functionInstancesLongNames.get(i)), "y"+functionInstancesShortNames.get(i));
+        }
+        problem.setObjective(linear, OptType.MIN);
+
+        //Add the constraints
+        //Number 6
+        //Special case source
+        linear = new Linear();
+        for (int j=0;j<functionInstancesShortNames.size();j++){//w
+            linear.add(1, "x"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(0));
+        }
+        for (int j=0;j<functionInstancesShortNames.size();j++){//z
+            linear.add(-1, "x"+functionInstancesShortNames.get(0)+functionInstancesShortNames.get(j));
+        }
+        problem.add("6-source",linear, "=", -1);
+        //Special case destination
+        linear = new Linear();
+        for (int j=0;j<functionInstancesShortNames.size();j++){//w
+            linear.add(1, "x"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(functionInstancesShortNames.size()-1));
+        }
+        for (int j=0;j<functionInstancesShortNames.size();j++){//z
+            linear.add(-1, "x"+functionInstancesShortNames.get(functionInstancesShortNames.size()-1)+functionInstancesShortNames.get(j));
+        }
+        problem.add("7-dest",linear, "=", 1);
+        //Regular case
+        linear = new Linear();
+        for (int i=1;i<functionInstancesShortNames.size()-1;i++){ //v minus source and destination
+            for (int j=0;j<functionInstancesShortNames.size();j++){//w
+                linear.add(1, "x"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(i));
+            }
+            for (int j=0;j<functionInstancesShortNames.size();j++){//z
+                linear.add(-1, "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+            }
+            problem.add("5-regular"+i,linear, "=", 0);
+            linear = new Linear(); //Do not forget to reset!
+        }
+        //Number 8
+        linear = new Linear();
+        for (int i=0;i<requestChain.size();i++){ //f
+            for (int j=1;j<functionInstancesShortNames.size()-1;j++){//v [(should not place on the source or the end)]
+                linear.add(isFunctionInstanceForFunction(functionInstancesLongNames.get(j),requestChain.get(i)), "y"+functionInstancesShortNames.get(j));
+            }
+            problem.add("8_"+i,linear, "=", 1);
+            linear = new Linear();
+        }
+
+        //Number 9
+        linear = new Linear();
+            for (int j=1;j<functionInstancesShortNames.size()-1;j++){//v - source - destination
+                for (int k=0;k<functionInstancesShortNames.size();k++) {//w
+                    linear.add(1, "x" + functionInstancesShortNames.get(j) + functionInstancesShortNames.get(k));
+                }
+                linear.add(-1, "y" + functionInstancesShortNames.get(j));
+                problem.add("9_"+j,linear, "=",0);
+                linear = new Linear();
+            }
+        //Number 10
+        for (int i=0;i<functionInstancesShortNames.size();i++){ //w
+            linear = new Linear();
+            for (int j=0;j<functionInstancesShortNames.size();j++){//v
+                linear.add(1, "x"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(i));
+            }
+            problem.add("10_"+i,linear, "<=", 1);
+        }
+        //Number 11
+        for (int i=0;i<functionInstancesShortNames.size();i++){ //v
+            linear = new Linear();
+            for (int j=0;j<functionInstancesShortNames.size();j++){//w
+                linear.add(1, "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+            }
+            problem.add("11_"+i,linear, "<=", 1);
+        }
+
+        //Number 12
+        linear = new Linear();
+        for (int i=0;i<functionInstancesShortNames.size();i++){ //v
+            for (int j=0;j<functionInstancesShortNames.size();j++){//w
+                linear.add(1, "o"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+                linear.add(-beta, "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+                problem.add("12_"+i+"_"+j,linear, "<=", 0);
+                linear = new Linear();
+            }
+        }
+        //Number 13 - special case source node
+        linear = new Linear();
+        for (int j=0;j<functionInstancesShortNames.size();j++) {//w
+            linear.add(1, "o"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(0));
+            linear.add(-1, "o"+functionInstancesShortNames.get(0)+functionInstancesShortNames.get(j));
+            linear.add(-1, "x"+functionInstancesShortNames.get(0)+functionInstancesShortNames.get(j));
+        }
+        problem.add("13-source",linear, "=", -beta);
+        // Number 13
+        linear = new Linear();
+        for (int i=1;i<functionInstancesShortNames.size()-1;i++) { //v - source - destination
+            for (int j=0;j<functionInstancesShortNames.size();j++) {//w
+                linear.add(1, "o"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(i));
+                linear.add(-1, "o"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+                linear.add(-1, "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+            }
+            problem.add("13_"+i,linear, "=", 0);
+            linear = new Linear();
+        }
+        //Number 14 - My alternative of constraint to enforce order
+        linear = new Linear();
+        for (int i=1;i<functionInstancesShortNames.size()-1;i++){ //v (- destination) - source (cannot place on source anyway)
+            for (int j=1;j<functionInstancesShortNames.size()-1;j++){ //w (- destination) - source
+                if (i != j) {
+                    for (int k = 0; k < requestChain.size(); k++) {
+                        for (int l = 0; l < requestChain.size(); l++) {
+                            if(k!=l){
+                                //The order in the request chain order should be the order in which the function should be placed
+                                if(k==l-1){
+                                    if(isFunctionInstanceForFunction(functionInstancesLongNames.get(i),requestChain.get(k))==1 &&isFunctionInstanceForFunction(functionInstancesLongNames.get(j),requestChain.get(l)) ==1) {
+                                        for (int m = 0; m < functionInstancesShortNames.size()-1; m++) {//alpha
+                                            linear.add(isFunctionInstanceForFunction(functionInstancesLongNames.get(i),requestChain.get(k)), "o" + functionInstancesShortNames.get(m) + functionInstancesShortNames.get(i));
+                                            linear.add(-isFunctionInstanceForFunction(functionInstancesLongNames.get(j),requestChain.get(l)) , "o" + functionInstancesShortNames.get(m) + functionInstancesShortNames.get(j));
+                                            linear.add(-beta, "x" + functionInstancesShortNames.get(m)+functionInstancesShortNames.get(j));
+                                        }
+                                        linear.add(-1, "x" + functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+                                        linear.add(-beta, "y" + functionInstancesShortNames.get(i));
+                                        linear.add(beta, "y" + functionInstancesShortNames.get(j));
+                                        problem.add("14new_" + i + "_" + j + "_" + k + "_" + l, linear, ">=", -beta);
+                                        linear = new Linear();
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        //Number 15
+        linear = new Linear();
+        //Travelling part
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+            for (int j=0;j<functionInstancesShortNames.size();j++){
+                    linear.add(network.getLinkTransmissionTime(functionInstancesLongNames.get(i),functionInstancesLongNames.get(j)), "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+            }
+        }
+        //Purchasing part
+        for (int i=1;i<functionInstancesShortNames.size()-1;i++){ //Exclude the start node and the end node
+            String currentName = functionInstancesLongNames.get(i);
+            Pair<String, String> nameSplit= Utils.splitLongFunctionInstanceName(currentName);
+                linear.add(network.getExecutionTime(nameSplit.getKey(),nameSplit.getValue()), "y"+functionInstancesShortNames.get(i));
+        }
+        problem.add("15",linear, "<=", deadline);
+
+        //No self loop
+        linear = new Linear();
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+                linear.add(1, "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(i));
+        }
+        problem.add("noSelfLoop",linear, "=", 0);
+
+        //Force so that nothing is placed on start and end
+        linear = new Linear();
+        linear.add(1, "y"+functionInstancesShortNames.get(0));
+        problem.add("NoPlacementOnStart",linear, "=", 0);
+        linear = new Linear();
+        linear.add(1, "y"+functionInstancesShortNames.get(functionInstancesShortNames.size()-1));
+        problem.add("NoPlacementOnEnd",linear, "=", 0);
+
+        //Solve the problem
+        Solver solver = new SolverGurobi();
+        Result result = solver.solve(problem);
+
+        if (result == null){
+            //Infeasible model, the request most likely cannot be served in time and should be dropped to avoid wasting resources
+            System.out.println("The request is infeasible");
+            return null;
+        }
+
+        System.out.println(result);
+
+        //Transform the solver output into a placement variable
+        List<String> optimalTourOrder = new LinkedList<>();
+        List<String> optimalTourVisitReason = new LinkedList<>();
+        List<String> allElementsForTiming = new LinkedList<>();
+
+        //Get which links were selected by the solver
+        Map<String,String> selectedLinks =new HashMap<>();
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+            for (int j=0;j<functionInstancesShortNames.size();j++){
+                //Check all the decision variables x values and extract the ones selected
+                if (result.getPrimalValue("x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j)).intValue()==1){
+                   selectedLinks.put(functionInstancesLongNames.get(i),functionInstancesLongNames.get(j));
+                   allElementsForTiming.add(functionInstancesLongNames.get(i)+"=>"+functionInstancesLongNames.get(j)); //Add all links
+                }
+            }
+        }
+        //Follow the path and fill the pre-return variables
+        //Deal with the start device
+        optimalTourOrder.add(startLocation);
+        optimalTourVisitReason.add("Start");
+        String currentInstance = selectedLinks.get(Utils.START);
+        //Deal with the middle devices based on the solver output
+        while(!currentInstance.equals(Utils.END)){
+            allElementsForTiming.add(currentInstance);
+            Pair<String,String> instanceSplit = Utils.splitLongFunctionInstanceName(currentInstance);
+            optimalTourOrder.add(instanceSplit.getKey());
+            optimalTourVisitReason.add(instanceSplit.getValue());
+            currentInstance=selectedLinks.get(currentInstance);
+        }
+
+        //Deal with the destination device
+        optimalTourOrder.add(destinationLocation);
+        optimalTourVisitReason.add("Destination");
+
+        //Creating the return variable
+        Triple<List<String>,List<String>,List<String>> placement= new Triple<>(optimalTourOrder,optimalTourVisitReason, allElementsForTiming);
+        return placement;
+    }
+
+    public RequestPlacementOutput run(Application currentApplication, String startLocation) {
+        //Getting the start location, i.e. the device at which the tuple is received
+        this.startLocation = startLocation;
+        this.destinationLocation = startLocation;//In the current implementation, start and end device are the same.
+
+        RequestPlacementOutput placement = new RequestPlacementOutput();
+        List<String> requestChain = currentApplication.getRequestChain();
+
+        Triple<List<String>,List<String>,List<String>> output = optimizationSolve(requestChain);
+        if (output == null){
+            //No placement solution
+            return null;
+        }
+
+        //Fix the placement class
+        placement.setObtainedTour(output.getLeft());
+        placement.setObtainedTourVisitReason(output.getMiddle());
+        placement.updateAppFunctionToDevice();
+        placement.setElementsForTiming(output.getRight());
+
+        return placement;
+    }
+
+    private int isFunctionInstanceForFunction(String longFunctionInstanceName,String functionName){
+        //Note: we assume that the long name is "device name" +"-"+"functionName"
+        //If it is not like that, this function does not work
+        boolean answer =longFunctionInstanceName.contains(functionName);
+        return (answer) ? 1 : 0;
+    }
+
+}
diff --git a/Code/src/placement/OptimalRequestPlacement_Overall.java b/Code/src/placement/OptimalRequestPlacement_Overall.java
new file mode 100644
index 0000000..96c5a12
--- /dev/null
+++ b/Code/src/placement/OptimalRequestPlacement_Overall.java
@@ -0,0 +1,358 @@
+package placement;
+
+import application.Application;
+import net.sf.javailp.*;
+import device.Device;
+import org.apache.commons.math3.util.Pair;
+import system.Network;
+import utils.Triple;
+import utils.Utils;
+
+import java.util.*;
+
+/**
+ * Created by Klervie Toczé
+ * Request Placement using ILP
+ * Optimization objective: Overall Energy
+ */
+public class OptimalRequestPlacement_Overall implements RequestPlacementLogic {
+
+    Network network;
+    List<Device> edgeDevicesInArea;//edge devices that can be considered for placement
+    Map<String,Device> edgeDevicesInAreaByName;
+
+    private String startLocation; //The device name of the start location for the request
+    private String destinationLocation; //The device name of the destination location for the request
+
+    public OptimalRequestPlacement_Overall(Network network) {
+        this.network=network;
+        this.edgeDevicesInArea=network.getEdgeDevices();
+        this.edgeDevicesInAreaByName = new HashMap<>();
+        for (Device device : edgeDevicesInArea){
+            this.edgeDevicesInAreaByName.put(device.getName(),device);
+        }
+    }
+
+    private Triple<List<String>,List<String>,List<String>> optimizationSolve(List<String> requestChain){
+
+        SolverFactory factory = new SolverFactoryGurobi();
+        factory.setParameter(Solver.VERBOSE,0);
+        factory.setParameter(Solver.TIMEOUT,1000); //Timeout of 1000 seconds
+
+        //Get the names of the function instances
+        List<String> functionInstancesLongNames = new ArrayList<>();
+        List<String> functionInstancesShortNames = new ArrayList<>();
+        functionInstancesShortNames.add(Utils.START);
+        functionInstancesLongNames.add(Utils.START);
+        for (Device device : edgeDevicesInArea){
+            if(device.getDeviceType()== Device.EDGE) {
+                //We are not interested by adding end device nodes
+                //The function instances placed are accessible via Device
+                    for (String module:device.getPlacedModulesOnDevice()){
+                        //Note: the dash in between is to facilitate re-split later
+                        String longName= device.getName() +"-" + module;
+                        //Create a shorter name - Assuming a node name of type "gateway_0", we want the first character and the number
+                        // followed by the two first letters of the module name
+                        String shortNameDevice;
+                        String nodeName=device.getName();
+                        if (nodeName.charAt(nodeName.length()-2)!="_".charAt(0)){
+                            shortNameDevice= ""+nodeName.charAt(0)+nodeName.charAt(nodeName.length()-2)+nodeName.charAt(nodeName.length()-1);
+                        }
+                        else {
+                            shortNameDevice= ""+nodeName.charAt(0)+nodeName.charAt(nodeName.length()-1);
+                        }
+                        String shortName = shortNameDevice +module.charAt(0)+module.charAt(1);
+                        functionInstancesShortNames.add(shortName);
+                        functionInstancesLongNames.add(longName);
+                    }
+            }
+        }
+        functionInstancesShortNames.add(Utils.END);
+        functionInstancesLongNames.add(Utils.END);
+
+        //Create a shorter version of the names for the requestChain
+        List<String> shortNameRequestChain = new ArrayList<>();
+        for (String longName : requestChain){
+            String shortName = ""+longName.charAt(0)+longName.charAt(1)+longName.charAt(2);
+            shortNameRequestChain.add(shortName);
+        }
+
+        //Input variables
+        //Create/Get the coefficients for the lambdas values in the objective function
+        int beta = requestChain.size()+2;//Add to be +2 to be number of links between instance + 1 due to constraint 6
+        double deadline = 100;
+
+        Problem problem = new Problem();
+
+        //Decision variables
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+            for (int j=0;j<functionInstancesShortNames.size();j++){
+                    problem.setVarType("x" + functionInstancesShortNames.get(i) + functionInstancesShortNames.get(j), Boolean.class);
+            }
+        }
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+                problem.setVarType("y"+functionInstancesShortNames.get(i), Boolean.class);
+        }
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+            for (int j=0;j<functionInstancesShortNames.size();j++){
+                    problem.setVarType("o" + functionInstancesShortNames.get(i) + functionInstancesShortNames.get(j), Integer.class);
+                    problem.setVarLowerBound("o"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j),0);
+                    problem.setVarUpperBound("o"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j),beta);
+            }
+        }
+
+        //Create the objective constraint
+        Linear linear = new Linear();
+        //Travelling part
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+            for (int j=0;j<functionInstancesShortNames.size();j++){
+                    linear.add(network.getLinkEnergyConsumption(functionInstancesLongNames.get(i),functionInstancesLongNames.get(j),this.startLocation,this.destinationLocation), "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+            }
+        }
+        //Purchasing part
+        for (int i=1;i<functionInstancesShortNames.size()-1;i++){ //Exclude the start and end nodes
+                linear.add(network.getInstanceEnergyConsumption(functionInstancesLongNames.get(i)), "y"+functionInstancesShortNames.get(i));
+        }
+        problem.setObjective(linear, OptType.MIN);
+
+        //Add the constraints
+        //Number 6
+        //Special case source
+        linear = new Linear();
+        for (int j=0;j<functionInstancesShortNames.size();j++){//w
+            linear.add(1, "x"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(0));
+        }
+        for (int j=0;j<functionInstancesShortNames.size();j++){//z
+            linear.add(-1, "x"+functionInstancesShortNames.get(0)+functionInstancesShortNames.get(j));
+        }
+        problem.add("6-source",linear, "=", -1);
+        //Special case destination
+        linear = new Linear();
+        for (int j=0;j<functionInstancesShortNames.size();j++){//w
+            linear.add(1, "x"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(functionInstancesShortNames.size()-1));
+        }
+        for (int j=0;j<functionInstancesShortNames.size();j++){//z
+            linear.add(-1, "x"+functionInstancesShortNames.get(functionInstancesShortNames.size()-1)+functionInstancesShortNames.get(j));
+        }
+        problem.add("7-dest",linear, "=", 1);
+        //Regular case
+        linear = new Linear();
+        for (int i=1;i<functionInstancesShortNames.size()-1;i++){ //v minus source and destination
+            for (int j=0;j<functionInstancesShortNames.size();j++){//w
+                linear.add(1, "x"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(i));
+            }
+            for (int j=0;j<functionInstancesShortNames.size();j++){//z
+                linear.add(-1, "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+            }
+            problem.add("5-regular"+i,linear, "=", 0);
+            linear = new Linear(); //Do not forget to reset!
+        }
+        //Number 8
+        linear = new Linear();
+        for (int i=0;i<requestChain.size();i++){ //f
+            for (int j=1;j<functionInstancesShortNames.size()-1;j++){//v [(should not place on the source or the end)]
+                linear.add(isFunctionInstanceForFunction(functionInstancesLongNames.get(j),requestChain.get(i)), "y"+functionInstancesShortNames.get(j));
+            }
+            problem.add("8_"+i,linear, "=", 1);
+            linear = new Linear();
+        }
+
+        //Number 9
+        linear = new Linear();
+            for (int j=1;j<functionInstancesShortNames.size()-1;j++){//v - source - destination
+                for (int k=0;k<functionInstancesShortNames.size();k++) {//w
+                    linear.add(1, "x" + functionInstancesShortNames.get(j) + functionInstancesShortNames.get(k));
+                }
+                linear.add(-1, "y" + functionInstancesShortNames.get(j));
+                problem.add("9_"+j,linear, "=",0);
+                linear = new Linear();
+            }
+        //Number 10
+        for (int i=0;i<functionInstancesShortNames.size();i++){ //w
+            linear = new Linear();
+            for (int j=0;j<functionInstancesShortNames.size();j++){//v
+                linear.add(1, "x"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(i));
+            }
+            problem.add("10_"+i,linear, "<=", 1);
+        }
+        //Number 11
+        for (int i=0;i<functionInstancesShortNames.size();i++){ //v
+            linear = new Linear();
+            for (int j=0;j<functionInstancesShortNames.size();j++){//w
+                linear.add(1, "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+            }
+            problem.add("11_"+i,linear, "<=", 1);
+        }
+
+        //Number 12
+        linear = new Linear();
+        for (int i=0;i<functionInstancesShortNames.size();i++){ //v
+            for (int j=0;j<functionInstancesShortNames.size();j++){//w
+                linear.add(1, "o"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+                linear.add(-beta, "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+                problem.add("12_"+i+"_"+j,linear, "<=", 0);
+                linear = new Linear();
+            }
+        }
+        //Number 13 - special case source node
+        linear = new Linear();
+        for (int j=0;j<functionInstancesShortNames.size();j++) {//w
+            linear.add(1, "o"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(0));
+            linear.add(-1, "o"+functionInstancesShortNames.get(0)+functionInstancesShortNames.get(j));
+            linear.add(-1, "x"+functionInstancesShortNames.get(0)+functionInstancesShortNames.get(j));
+        }
+        problem.add("13-source",linear, "=", -beta);
+        // Number 13
+        linear = new Linear();
+        for (int i=1;i<functionInstancesShortNames.size()-1;i++) { //v - source - destination
+            for (int j=0;j<functionInstancesShortNames.size();j++) {//w
+                linear.add(1, "o"+functionInstancesShortNames.get(j)+functionInstancesShortNames.get(i));
+                linear.add(-1, "o"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+                linear.add(-1, "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+            }
+            problem.add("13_"+i,linear, "=", 0);
+            linear = new Linear();
+        }
+        //Number 14 - My alternative of constraint to enforce order
+        linear = new Linear();
+        for (int i=1;i<functionInstancesShortNames.size()-1;i++){ //v (- destination) - source (cannot place on source anyway)
+            for (int j=1;j<functionInstancesShortNames.size()-1;j++){ //w (- destination) - source
+                if (i != j) {
+                    for (int k = 0; k < requestChain.size(); k++) {
+                        for (int l = 0; l < requestChain.size(); l++) {
+                            if(k!=l){
+                                //The order in the request chain order should be the order in which the function should be placed
+                                if(k==l-1){
+                                    if(isFunctionInstanceForFunction(functionInstancesLongNames.get(i),requestChain.get(k))==1 &&isFunctionInstanceForFunction(functionInstancesLongNames.get(j),requestChain.get(l)) ==1) {
+                                        for (int m = 0; m < functionInstancesShortNames.size()-1; m++) {//alpha
+                                            linear.add(isFunctionInstanceForFunction(functionInstancesLongNames.get(i),requestChain.get(k)), "o" + functionInstancesShortNames.get(m) + functionInstancesShortNames.get(i));
+                                            linear.add(-isFunctionInstanceForFunction(functionInstancesLongNames.get(j),requestChain.get(l)) , "o" + functionInstancesShortNames.get(m) + functionInstancesShortNames.get(j));
+                                            linear.add(-beta, "x" + functionInstancesShortNames.get(m)+functionInstancesShortNames.get(j));
+                                        }
+                                        linear.add(-1, "x" + functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+                                        linear.add(-beta, "y" + functionInstancesShortNames.get(i));
+                                        linear.add(beta, "y" + functionInstancesShortNames.get(j));
+                                        problem.add("14new_" + i + "_" + j + "_" + k + "_" + l, linear, ">=", -beta);
+                                        linear = new Linear();
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        //Number 15
+        linear = new Linear();
+        //Travelling part
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+            for (int j=0;j<functionInstancesShortNames.size();j++){
+                    linear.add(network.getLinkTransmissionTime(functionInstancesLongNames.get(i),functionInstancesLongNames.get(j)), "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j));
+            }
+        }
+        //Purchasing part
+        for (int i=1;i<functionInstancesShortNames.size()-1;i++){ //Exclude the start node and the end node
+            String currentName = functionInstancesLongNames.get(i);
+            Pair<String, String> nameSplit= Utils.splitLongFunctionInstanceName(currentName);
+                linear.add(network.getExecutionTime(nameSplit.getKey(),nameSplit.getValue()), "y"+functionInstancesShortNames.get(i));
+        }
+        problem.add("15",linear, "<=", deadline);
+
+        //No self loop
+        linear = new Linear();
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+                linear.add(1, "x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(i));
+        }
+        problem.add("noSelfLoop",linear, "=", 0);
+
+        //Force so that nothing is placed on start and end
+        linear = new Linear();
+        linear.add(1, "y"+functionInstancesShortNames.get(0));
+        problem.add("NoPlacementOnStart",linear, "=", 0);
+        linear = new Linear();
+        linear.add(1, "y"+functionInstancesShortNames.get(functionInstancesShortNames.size()-1));
+        problem.add("NoPlacementOnEnd",linear, "=", 0);
+
+        //Solve the problem
+        Solver solver = new SolverGurobi();
+        Result result = solver.solve(problem);
+
+        if (result == null){
+            //Infeasible model, the request most likely cannot be served in time and should be dropped to avoid wasting resources
+            System.out.println("The request is infeasible");
+            return null;
+        }
+
+        System.out.println(result);
+
+        //Transform the solver output into a placement variable
+        List<String> optimalTourOrder = new LinkedList<>();
+        List<String> optimalTourVisitReason = new LinkedList<>();
+        List<String> allElementsForTiming = new LinkedList<>();
+
+        //Get which links were selected by the solver
+        Map<String,String> selectedLinks =new HashMap<>();
+        for (int i=0;i<functionInstancesShortNames.size();i++){
+            for (int j=0;j<functionInstancesShortNames.size();j++){
+                //Check all the decision variables x values and extract the ones selected
+                if (result.getPrimalValue("x"+functionInstancesShortNames.get(i)+functionInstancesShortNames.get(j)).intValue()==1){
+                   selectedLinks.put(functionInstancesLongNames.get(i),functionInstancesLongNames.get(j));
+                   allElementsForTiming.add(functionInstancesLongNames.get(i)+"=>"+functionInstancesLongNames.get(j)); //Add all links
+                }
+            }
+        }
+        //Follow the path and fill the pre-return variables
+        //Deal with the start device
+        optimalTourOrder.add(startLocation);
+        optimalTourVisitReason.add("Start");
+        String currentInstance = selectedLinks.get(Utils.START);
+        //Deal with the middle devices based on the solver output
+        while(!currentInstance.equals(Utils.END)){
+            allElementsForTiming.add(currentInstance);
+            Pair<String,String> instanceSplit = Utils.splitLongFunctionInstanceName(currentInstance);
+            optimalTourOrder.add(instanceSplit.getKey());
+            optimalTourVisitReason.add(instanceSplit.getValue());
+            currentInstance=selectedLinks.get(currentInstance);
+        }
+
+        //Deal with the destination device
+        optimalTourOrder.add(destinationLocation);
+        optimalTourVisitReason.add("Destination");
+
+        //Creating the return variable
+        Triple<List<String>,List<String>,List<String>> placement= new Triple<>(optimalTourOrder,optimalTourVisitReason, allElementsForTiming);
+        return placement;
+    }
+
+    public RequestPlacementOutput run(Application currentApplication, String startLocation) {
+        //Getting the start location, i.e. the device at which the tuple is received
+        this.startLocation = startLocation;
+        this.destinationLocation = startLocation;//In the current implementation, start and end device are the same.
+
+        RequestPlacementOutput placement = new RequestPlacementOutput();
+        List<String> requestChain = currentApplication.getRequestChain();
+
+        Triple<List<String>,List<String>,List<String>> output = optimizationSolve(requestChain);
+        if (output == null){
+            //No placement solution
+            return null;
+        }
+
+        //Fix the placement class
+        placement.setObtainedTour(output.getLeft());
+        placement.setObtainedTourVisitReason(output.getMiddle());
+        placement.updateAppFunctionToDevice();
+        placement.setElementsForTiming(output.getRight());
+
+        return placement;
+    }
+
+    private int isFunctionInstanceForFunction(String longFunctionInstanceName,String functionName){
+        //Note: we assume that the long name is "device name" +"-"+"functionName"
+        //If it is not like that, this function does not work
+        boolean answer =longFunctionInstanceName.contains(functionName);
+        return (answer) ? 1 : 0;
+    }
+
+}
diff --git a/Code/src/placement/RequestPlacementLogic.java b/Code/src/placement/RequestPlacementLogic.java
new file mode 100644
index 0000000..1a5ca54
--- /dev/null
+++ b/Code/src/placement/RequestPlacementLogic.java
@@ -0,0 +1,10 @@
+package placement;
+
+import application.Application;
+
+/**
+ * Created by Klervie Toczé
+ */
+public interface RequestPlacementLogic {
+    RequestPlacementOutput run(Application application, String startLocation);
+}
diff --git a/Code/src/placement/RequestPlacementOutput.java b/Code/src/placement/RequestPlacementOutput.java
new file mode 100644
index 0000000..57dbc28
--- /dev/null
+++ b/Code/src/placement/RequestPlacementOutput.java
@@ -0,0 +1,48 @@
+package placement;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Klervie Toczé
+ */
+public class RequestPlacementOutput {
+
+    List<String> obtainedTour; //output of the placement
+    List<String> obtainedTourVisitReason; //output of the placement
+    List<String> elementsForTiming; //All links and devices to be timed according to the placement
+
+    private Map<String, String> appFunctionToDevice; //Function mapping to device name according to obtained tour
+
+    public RequestPlacementOutput() {
+    }
+
+   public Map<String, String> getAppFunctionToDevice(){
+        return this.appFunctionToDevice;
+    }
+
+    public List<String> getElementsForTiming() {
+        return elementsForTiming;
+    }
+
+    public void setObtainedTour(List<String> obtainedTour) {
+        this.obtainedTour = obtainedTour; //Note: shallow copy should not be a problem here as we deep copied when exiting the placement class
+    }
+
+    public void setObtainedTourVisitReason(List<String> obtainedTourVisitReason) {
+        this.obtainedTourVisitReason = obtainedTourVisitReason; //Note: shallow copy should not be a problem here as we deep copied when exiting the placement class
+    }
+
+    public void setElementsForTiming(List<String> elementsForTiming){
+        this.elementsForTiming=elementsForTiming;
+    }
+
+    public void updateAppFunctionToDevice(){
+        appFunctionToDevice = new HashMap<>();
+        for (int i = 1; i< obtainedTour.size()-1; i++){ //We remove the init and end
+            appFunctionToDevice.put(obtainedTourVisitReason.get(i), obtainedTour.get(i));
+        }
+    }
+
+}
diff --git a/Code/src/solver/SolverGurobi.java b/Code/src/solver/SolverGurobi.java
new file mode 100644
index 0000000..da19a9f
--- /dev/null
+++ b/Code/src/solver/SolverGurobi.java
@@ -0,0 +1,190 @@
+package solver;//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+import gurobi.*;
+import gurobi.GRB.DoubleAttr;
+import gurobi.GRB.DoubleParam;
+import gurobi.GRB.IntParam;
+import net.sf.javailp.*;
+
+import java.util.*;
+
+public class SolverGurobi extends AbstractSolver {
+    protected final Set<Hook> hooks = new HashSet();
+
+    public SolverGurobi() {
+    }
+
+    public Result solve(Problem problem) {
+        Map<Object, GRBVar> objToVar = new HashMap();
+        Map<GRBVar, Object> varToObj = new HashMap();
+
+        try {
+            GRBEnv env = new GRBEnv("gurobi.log");
+            this.initWithParameters(env);
+            GRBModel model = new GRBModel(env);
+            OptType optType = problem.getOptType();
+            Map<Object, Double> optimizationCoefficients = new HashMap();
+            Linear objective = problem.getObjective();
+            Object variable;
+            double coeff;
+            if (objective != null) {
+                for(Iterator i$ = objective.iterator(); i$.hasNext(); optimizationCoefficients.put(variable, coeff)) {
+                    Term term = (Term)i$.next();
+                    variable = term.getVariable();
+                    coeff = term.getCoefficient().doubleValue();
+                    if (optType == OptType.MAX) {
+                        coeff *= -1.0;
+                    }
+                }
+            }
+
+            int i = 1;
+
+            double primalValue;
+            Iterator i$;
+            for(i$ = problem.getVariables().iterator(); i$.hasNext(); ++i) {
+                variable = i$.next();
+                VarType varType = problem.getVarType(variable);
+                Number lowerBound = problem.getVarLowerBound(variable);
+                Number upperBound = problem.getVarUpperBound(variable);
+                primalValue = lowerBound != null ? lowerBound.doubleValue() : -1.7976931348623157E308;
+                double ub = upperBound != null ? upperBound.doubleValue() : Double.MAX_VALUE;
+                String name = variable.toString();
+                char type;
+                switch (varType) {
+                    case BOOL:
+                        type = 'B';
+                        break;
+                    case INT:
+                        type = 'I';
+                        break;
+                    default:
+                        type = 'C';
+                }
+
+                Double coeff2 = (Double)optimizationCoefficients.get(variable);
+                if (coeff2 == null) {
+                    coeff2 = 0.0;
+                }
+
+                GRBVar var = model.addVar(primalValue, ub, coeff2, type, name);
+                objToVar.put(variable, var);
+                varToObj.put(var, variable);
+            }
+
+            model.update();
+
+            Constraint constraint;
+            GRBLinExpr expr;
+            char operator;
+            for(i$ = problem.getConstraints().iterator(); i$.hasNext(); model.addConstr(expr, operator, constraint.getRhs().doubleValue(), constraint.getName())) {
+                constraint = (Constraint)i$.next();
+                expr = new GRBLinExpr();
+                Iterator j$ = constraint.getLhs().iterator();
+
+                while(j$.hasNext()) {
+                    Term term = (Term)j$.next();
+                    GRBVar var = (GRBVar)objToVar.get(term.getVariable());
+                    expr.addTerm(term.getCoefficient().doubleValue(), var);
+                }
+
+                if (constraint.getOperator() == Operator.GE) {
+                    operator = '>';
+                } else if (constraint.getOperator() == Operator.LE) {
+                    operator = '<';
+                } else {
+                    operator = '=';
+                }
+            }
+
+            i$ = this.hooks.iterator();
+
+            while(i$.hasNext()) {
+                Hook hook = (Hook)i$.next();
+                hook.call(env, model, objToVar, varToObj, problem);
+            }
+
+            //The two lines below can be uncommented to investigate why a model is infeasible
+            //model.computeIIS();
+            //model.write("infeasible.ilp");
+
+            model.optimize();
+            System.out.println("Model status is "+ model.get(GRB.IntAttr.Status));
+            System.out.println("Model runtime is "+ model.get(GRB.DoubleAttr.Runtime));
+
+            //Below code to exit in a controlled way if the model is infeasible
+            if (model.get(GRB.IntAttr.Status) == 3){//INFEASIBLE See https://www.gurobi.com/documentation/9.1/refman/optimization_status_codes.html
+                return null;
+            }
+
+            ResultImpl result;
+            if (problem.getObjective() != null) {
+                result = new ResultImpl(problem.getObjective());
+            } else {
+                result = new ResultImpl();
+            }
+
+            Iterator j$ = objToVar.entrySet().iterator();
+
+            while(j$.hasNext()) {
+                Map.Entry<Object, GRBVar> entry = (Map.Entry)j$.next();
+                Object variable2 = entry.getKey();
+                GRBVar var = (GRBVar)entry.getValue();
+                primalValue = var.get(DoubleAttr.X);
+                if (problem.getVarType(variable2).isInt()) {
+                    int v = (int)Math.round(primalValue);
+                    result.putPrimalValue(variable2, v);
+                } else {
+                    result.putPrimalValue(variable2, primalValue);
+                }
+            }
+
+            return result;
+        } catch (GRBException var23) {
+            var23.printStackTrace();
+            return null;
+        }
+    }
+
+    protected void initWithParameters(GRBEnv env) throws GRBException {
+        Object verbose = this.parameters.get(1);
+        Object timeout = this.parameters.get(0);
+        Number number;
+        if (verbose != null && verbose instanceof Number) {
+            number = (Number)verbose;
+            int value = number.intValue();
+            byte msgLevel;
+            switch (value) {
+                case 0:
+                    msgLevel = 0;
+                    break;
+                default:
+                    msgLevel = 1;
+            }
+
+            env.set(IntParam.OutputFlag, msgLevel);
+        }
+
+        if (timeout != null && timeout instanceof Number) {
+            number = (Number)timeout;
+            double value = number.doubleValue();
+            env.set(DoubleParam.TimeLimit, value);
+        }
+
+    }
+
+    public void addHook(Hook hook) {
+        this.hooks.add(hook);
+    }
+
+    public void removeHook(Hook hook) {
+        this.hooks.remove(hook);
+    }
+
+    public interface Hook {
+        void call(GRBEnv var1, GRBModel var2, Map<Object, GRBVar> var3, Map<GRBVar, Object> var4, Problem var5);
+    }
+}
diff --git a/Code/src/system/Location.java b/Code/src/system/Location.java
new file mode 100644
index 0000000..f457244
--- /dev/null
+++ b/Code/src/system/Location.java
@@ -0,0 +1,12 @@
+package system;
+
+public class Location {
+
+	public double latitude;
+	public double longitude;
+
+	public Location(double latitude, double longitude) {
+		this.latitude = latitude;
+		this.longitude = longitude;
+	}
+}
diff --git a/Code/src/system/Network.java b/Code/src/system/Network.java
new file mode 100644
index 0000000..596a892
--- /dev/null
+++ b/Code/src/system/Network.java
@@ -0,0 +1,600 @@
+package system;
+
+import application.Application;
+import device.Device;
+import org.apache.commons.math3.util.Pair;
+import placement.RequestPlacementOutput;
+import utils.Config;
+import utils.Distribution;
+import utils.NormalDistribution;
+import utils.Utils;
+import org.jgrapht.Graph;
+import org.jgrapht.GraphPath;
+import org.jgrapht.alg.interfaces.ShortestPathAlgorithm;
+import org.jgrapht.alg.shortestpath.DijkstraShortestPath;
+import org.jgrapht.graph.DefaultUndirectedWeightedGraph;
+import org.jgrapht.graph.DefaultWeightedEdge;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Network {
+
+    List<Device> edgeDevices = new ArrayList<Device>();
+    Map<String, Device> nameToDevice;
+
+    Application application;
+
+    Graph<Device, DefaultWeightedEdge> graph;
+    DijkstraShortestPath<Device, DefaultWeightedEdge> dijkstraAlg;
+
+    Map<String,Double> utilization;
+    Map<String,Double> time_links = new HashMap<>();//Create container
+    Map<String,Double> energy_links = new HashMap<>();//Create container
+    Map<String,Double> energy_residual_links = new HashMap<>();//Create container
+    Map<String,Double> time_devices = new HashMap<>();//Create container
+    Map<String,Double> energy_devices = new HashMap<>();//Create container
+    Map<String,Double> energy_residual_devices = new HashMap<>();//Create container
+
+    String placingDevice;
+
+    public Network(Application applicationConsidered, String placingDevice){
+
+        application= applicationConsidered;
+        this.placingDevice=placingDevice;
+
+        //Locations according to Abilene
+        Map<Integer,Location> locationInfo = new HashMap<Integer,Location>();
+
+        Location location0= new Location(40.71427,-74.00597);
+        locationInfo.put(0,location0);
+        Location location1= new Location(41.85003,-87.65005);
+        locationInfo.put(1,location1);
+        Location location2= new Location(38.89511,-77.03637);
+        locationInfo.put(2,location2);
+        Location location3= new Location(47.60621,-122.33207);
+        locationInfo.put(3,location3);
+        Location location4= new Location(37.36883,-122.03635);
+        locationInfo.put(4,location4);
+        Location location5= new Location(34.05223,-118.24368);
+        locationInfo.put(5,location5);
+        Location location6= new Location(39.73915,-104.9847);
+        locationInfo.put(6,location6);
+        Location location7= new Location(39.11417,-94.62746);
+        locationInfo.put(7,location7);
+        Location location8= new Location(29.76328,-95.36327);
+        locationInfo.put(8,location8);
+        Location location9= new Location(33.749,-84.38798);
+        locationInfo.put(9,location9);
+        Location location10= new Location(39.76838,-86.15804);
+        locationInfo.put(10,location10);
+
+        for (int i = 0; i < 11; i++) {
+
+            Device gateway = createEdgeDevice("gateway_" + i, 300 , Device.EDGE);
+            gateway.setLocationInformation(locationInfo.get(i));
+            edgeDevices.add(gateway);
+        }
+
+        createNetworkGraph();
+        dijkstraAlg = new DijkstraShortestPath<>(graph);
+    }
+
+    private void createNetworkGraph(){
+        graph = new DefaultUndirectedWeightedGraph<>(DefaultWeightedEdge.class);
+
+        //Utility map returning Device based on name - used for creating the links easier
+        nameToDevice= new HashMap<String, Device>();
+
+        // Add vertices
+        for (Device edgeDevice: edgeDevices) {
+            if(edgeDevice.getName().contains("gateway")){ //All of them should
+                graph.addVertex(edgeDevice);
+                //Adding the node to the map
+                nameToDevice.put(edgeDevice.getName(), edgeDevice);
+            }
+        }
+
+        //Add edges - hardcoded to Abilene
+        graph.addEdge(nameToDevice.get("gateway_0"),nameToDevice.get("gateway_1"));
+        graph.addEdge(nameToDevice.get("gateway_0"),nameToDevice.get("gateway_2"));
+        graph.addEdge(nameToDevice.get("gateway_1"),nameToDevice.get("gateway_10"));
+        graph.addEdge(nameToDevice.get("gateway_2"),nameToDevice.get("gateway_9"));
+        graph.addEdge(nameToDevice.get("gateway_3"),nameToDevice.get("gateway_6"));
+        graph.addEdge(nameToDevice.get("gateway_3"),nameToDevice.get("gateway_4"));
+        graph.addEdge(nameToDevice.get("gateway_4"),nameToDevice.get("gateway_5"));
+        graph.addEdge(nameToDevice.get("gateway_4"),nameToDevice.get("gateway_6"));
+        graph.addEdge(nameToDevice.get("gateway_6"),nameToDevice.get("gateway_7"));
+        graph.addEdge(nameToDevice.get("gateway_7"),nameToDevice.get("gateway_8"));
+        graph.addEdge(nameToDevice.get("gateway_7"),nameToDevice.get("gateway_10"));
+        graph.addEdge(nameToDevice.get("gateway_5"),nameToDevice.get("gateway_8"));
+        graph.addEdge(nameToDevice.get("gateway_8"),nameToDevice.get("gateway_9"));
+        graph.addEdge(nameToDevice.get("gateway_9"),nameToDevice.get("gateway_10"));
+
+        //Set the edge weights
+        for (DefaultWeightedEdge edge: graph.edgeSet()){
+            double calculatedWeight = calculateWeight(graph.getEdgeSource(edge), graph.getEdgeTarget(edge));
+            graph.setEdgeWeight(edge,calculatedWeight);
+        }
+    }
+
+    public double getLinkTransmissionTime(String startFunctionInstance, String destinationFunctionInstance){
+            //Check if we already have it
+            Double linkTiming = time_links.get(startFunctionInstance+"=>"+destinationFunctionInstance);
+            if(linkTiming==null){
+                //We need to calculate it
+                //Get size to be transmitted
+                Double size = application.getTargetFunctionNwSize(Utils.getTargetFunction(startFunctionInstance+"=>"+destinationFunctionInstance));
+                //Get current utilization
+                Pair<String, String> nameSplitStart= Utils.splitLongFunctionInstanceName(startFunctionInstance);
+                Pair<String, String> nameSplitDestination= Utils.splitLongFunctionInstanceName(destinationFunctionInstance);
+                //Check for start/end nodes
+                if(nameSplitStart.getKey().equals(Utils.START)||nameSplitStart.getKey().equals(Utils.END)){
+                    //OBS for now start and end are the same
+                    String value= nameSplitStart.getValue();//Should be empty string
+                    nameSplitStart=new Pair<>(placingDevice,value);
+                }
+                if(nameSplitDestination.getKey().equals(Utils.START)||nameSplitDestination.getKey().equals(Utils.END)){
+                    //OBS for now start and end are the same
+                    String value= nameSplitDestination.getValue();//Should be empty string
+                    nameSplitDestination=new Pair<>(placingDevice,value);
+                }
+
+                //Special case where end and start are the same - then transmission time is 0
+                if(nameSplitStart.getKey().equals(nameSplitDestination.getKey())){
+                    linkTiming=0.0;
+                }else {
+                    Double currentUtilization = utilization.get(nameSplitStart.getKey() + "=>" + nameSplitDestination.getKey());
+                    //Get available capacity
+                    Double availableCapacity = Config.DEFAULT_LINK_CAPACITY * (1-(currentUtilization / 100));
+                    //Get link latency
+                    Double linkLatency = getLinkLatency(nameSplitStart.getKey(), nameSplitDestination.getKey());
+                    //Calculate according to formula
+                    if (availableCapacity==0){
+                        linkTiming = Double.valueOf(Config.INFINITE);
+                    }else {
+                        linkTiming = (size / availableCapacity) + linkLatency;
+                    }
+                }
+                //Add to the Map variable
+                time_links.put(startFunctionInstance+"=>"+destinationFunctionInstance, linkTiming);
+            }
+            return linkTiming;
+    }
+
+    public double getExecutionTime(String device, String functionInstance){
+            //Check if we already have it
+            Double deviceTiming = time_devices.get(device+"-"+functionInstance);
+            if(deviceTiming==null){
+                //We need to calculate it
+                //Get utilization value for this device
+                Double currentUtilization = utilization.get(device);
+                //Get size to be calculated
+                Double size = application.getTargetFunctionCPUSize(functionInstance);
+                //Get available capacity
+                Double availableCapacity = Config.DEFAULT_DEVICE_CAPACITY * (1-(currentUtilization / 100));//Note: this is allocating all the available capacity
+                //Calculate according to formula
+                if (availableCapacity==0){
+                    deviceTiming=Double.valueOf(Config.INFINITE);
+                }else {
+                    deviceTiming = (size / availableCapacity);
+                }
+                //Add to the Map variable
+                time_devices.put(device+"-"+functionInstance, deviceTiming);
+            }
+            return deviceTiming;
+    }
+
+    private double calculateWeight(Device source, Device destination){
+        //For this scenario the weight is the latency calculated as the distance between the nodes divided by 100
+        double distance = calculateDistance(source.getLocationInformation(),destination.getLocationInformation())/100;
+        return distance;
+    }
+
+    public double calculateDistance(Location loc1, Location loc2) {
+
+        final int R = 6371; // Radius of the earth in Kilometers
+
+        double latDistance = Math.toRadians(loc1.latitude - loc2.latitude);
+        double lonDistance = Math.toRadians(loc1.longitude - loc2.longitude);
+        double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
+                + Math.cos(Math.toRadians(loc1.latitude)) * Math.cos(Math.toRadians(loc2.latitude))
+                * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
+        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+        double distance = R * c; // kms
+
+
+        distance = Math.pow(distance, 2);
+
+        return Math.sqrt(distance);
+    }
+
+    private double getLinkLatency(String startDeviceName, String endDeviceName){
+        Device startDevice=nameToDevice.get(startDeviceName);
+        Device endDevice=nameToDevice.get(endDeviceName);
+        ShortestPathAlgorithm.SingleSourcePaths<Device, DefaultWeightedEdge> iPaths = dijkstraAlg.getPaths(startDevice);
+        GraphPath<Device, DefaultWeightedEdge> pathToDestination = iPaths.getPath(endDevice);
+
+        //Calculate the latency of the path by summing the edge latency of its edges
+        double totalLatency = 0;
+        for (DefaultWeightedEdge link : pathToDestination.getEdgeList()){
+            totalLatency+=graph.getEdgeWeight(link);
+        }
+        //Calculate latency
+        return totalLatency;
+    }
+
+    private double getDynamicPowerForUtilization(double utilizationWithServicePlaced, double dynPower){
+        //We consider a linear model were the dynamic power part is 0 at 0% utilization (OBS it still has idle power but this is another constant)
+        // and Dyn power att 100% utilization
+        //utilization in percentage
+        return dynPower*(utilizationWithServicePlaced/100);
+    }
+
+    public double getLinkEnergyConsumption(String startFunctionInstanceName, String destinationFunctionInstanceName,
+                                           String startLocation, String destinationLocation){
+        // 0 - Get names
+        String startDeviceName;
+        if (startFunctionInstanceName==Utils.START){
+            startDeviceName=startLocation;
+        }
+        else if (startFunctionInstanceName==Utils.END){
+            startDeviceName=destinationLocation;
+        }
+        else{
+            Pair<String,String> startSplit = Utils.splitLongFunctionInstanceName(startFunctionInstanceName);
+            startDeviceName= startSplit.getKey();
+        }
+        String destinationDeviceName;
+        if (destinationFunctionInstanceName==Utils.END){
+            destinationDeviceName = destinationLocation;
+        }
+        else if (destinationFunctionInstanceName==Utils.START){
+            destinationDeviceName = startLocation;
+        }
+        else{
+            Pair<String,String> destinationSplit = Utils.splitLongFunctionInstanceName(destinationFunctionInstanceName);
+            destinationDeviceName= destinationSplit.getKey();
+        }
+
+        Double currentUtilization = utilization.get(startDeviceName + "=>" + destinationDeviceName);
+
+        // 1- get the linkTiming
+        double linkTiming=getLinkTransmissionTime(startFunctionInstanceName,destinationFunctionInstanceName);
+
+        // 2 - Check whether we already have calculated the energy
+        double energy_link;
+        if(energy_links.get(startFunctionInstanceName + "=>" + destinationFunctionInstanceName)!= null) {
+            energy_link=energy_links.get(startFunctionInstanceName + "=>" + destinationFunctionInstanceName);
+        }
+        else {
+            //We need to calculate it
+
+            //Get Pidle
+            int p_link_idle = Config.DEFAULT_LINK_P_IDLE;
+            //GetPdyn
+            int p_link_dyn = Config.DEFAULT_LINK_P_DYN;
+            //Calculate energy
+            energy_link = p_link_idle * linkTiming + p_link_dyn * linkTiming;
+
+            //Add to Map variables
+            energy_links.put(startFunctionInstanceName + "=>" + destinationFunctionInstanceName, energy_link);
+        }
+        return energy_link;
+    }
+
+    public double getLinkMarginalEnergyConsumption(String startFunctionInstanceName, String destinationFunctionInstanceName,
+                                                   String startLocation, String destinationLocation){
+        // 0 - Get names
+        String startDeviceName;
+        if (startFunctionInstanceName==Utils.START){
+            startDeviceName=startLocation;
+        }
+        else if (startFunctionInstanceName==Utils.END){
+            startDeviceName=destinationLocation;
+        }
+        else{
+            Pair<String,String> startSplit = Utils.splitLongFunctionInstanceName(startFunctionInstanceName);
+            startDeviceName= startSplit.getKey();
+        }
+        String destinationDeviceName;
+        if (destinationFunctionInstanceName==Utils.END){
+            destinationDeviceName = destinationLocation;
+        }
+        else if (destinationFunctionInstanceName==Utils.START){
+            destinationDeviceName = startLocation;
+        }
+        else{
+            Pair<String,String> destinationSplit = Utils.splitLongFunctionInstanceName(destinationFunctionInstanceName);
+            destinationDeviceName= destinationSplit.getKey();
+        }
+
+        double linkTiming=getLinkTransmissionTime(startFunctionInstanceName,destinationFunctionInstanceName);
+
+        // 2 - Check whether we already have calculated the residual energy
+        double energy_residual_link;
+        if(energy_residual_links.get(startFunctionInstanceName + "=>" + destinationFunctionInstanceName)!= null) {
+            energy_residual_link=energy_residual_links.get(startFunctionInstanceName + "=>" + destinationFunctionInstanceName);
+        }
+        else {
+            //We need to calculate it
+            //First check if the timing is 0 (self loop)
+            if (linkTiming==0.0){
+                energy_residual_link=0.0;
+            }else {
+                //Get Pidle
+                int p_link_idle = Config.DEFAULT_LINK_P_IDLE;
+                //GetPdyn
+                int p_link_dyn = Config.DEFAULT_LINK_P_DYN;
+                //Calculate residual energy
+                energy_residual_link = p_link_idle * linkTiming + p_link_dyn * linkTiming;
+            }
+            //Add to Map variables
+            energy_residual_links.put(startFunctionInstanceName + "=>" + destinationFunctionInstanceName, energy_residual_link);
+        }
+        return energy_residual_link;
+    }
+
+    public double getInstanceEnergyConsumption(String functionInstanceName){
+        // 1- Getting the hardware name
+        Pair<String, String> nameSplit = Utils.splitLongFunctionInstanceName(functionInstanceName);
+        String deviceName = nameSplit.getKey();
+
+        //Check whether we already have info about this
+        double energy_consumption;
+        if(energy_devices.get(functionInstanceName)!=null){
+            energy_consumption=energy_devices.get(functionInstanceName);
+        }else{
+            //We need to calculate it
+
+            //Get execution time
+            double deviceTiming=getExecutionTime(deviceName,nameSplit.getValue());
+
+            //Get Pidle
+            int p_device_idle = Config.DEFAULT_DEVICE_P_IDLE;
+            //GetPdyn
+            int p_device_dyn = Config.DEFAULT_DEVICE_P_DYN;
+            //Calculate energy
+            energy_consumption = p_device_idle * deviceTiming + p_device_dyn * deviceTiming; //Assumes 100% utilization when selected
+
+            //Add to Map variables
+            energy_devices.put(functionInstanceName, energy_consumption);
+        }
+        return energy_consumption;
+    }
+
+    public double getInstanceMarginalEnergyConsumption(String functionInstanceName){
+        // 1- Getting the hardware name
+        Pair<String, String> nameSplit = Utils.splitLongFunctionInstanceName(functionInstanceName);
+        String deviceName = nameSplit.getKey();
+
+        //Check whether we already have info about this
+        double energy_residual_consumption;
+        if(energy_residual_devices.get(functionInstanceName)!=null){
+            energy_residual_consumption=energy_residual_devices.get(functionInstanceName);
+        }else{
+            //We need to calculate it
+
+            //Get execution time
+            double deviceTiming=getExecutionTime(deviceName,nameSplit.getValue());
+
+            //Get Pidle
+            int p_device_idle = Config.DEFAULT_DEVICE_P_IDLE;
+            //GetPdyn
+            int p_device_dyn = Config.DEFAULT_DEVICE_P_DYN;
+            //Get utilization value for this device
+            Double beforeUtilization = utilization.get(deviceName);
+            if (beforeUtilization == 0) {
+                energy_residual_consumption = p_device_idle * deviceTiming + p_device_dyn * deviceTiming; //Assumes the utilization gets up to 100%
+            } else {
+                double utilizationWithServicePlaced = 100.0; //Assumption, see above
+                double utilizationIncrease = utilizationWithServicePlaced - beforeUtilization;
+                //OBS Assumes a linear power consumption model
+                double p_device_dyn_util = getDynamicPowerForUtilization(utilizationIncrease, p_device_dyn);//How much power does the utilization increase due to the placement requires?
+                energy_residual_consumption = p_device_dyn_util * deviceTiming; //Only the dynamic part
+            }
+
+            //Add to Map variables
+            energy_residual_devices.put(functionInstanceName, energy_residual_consumption);
+        }
+        return energy_residual_consumption;
+    }
+
+        public void evaluatePlacementOutput(RequestPlacementOutput output, String startLocationMathematical, String endLocationMathematical){
+
+        if(output==null){
+            System.out.println("No evaluation of the placement, request was infeasible");
+        }else {
+            List<String> elementsToCalculateTime = output.getElementsForTiming();
+            Map<String, String> placement = output.getAppFunctionToDevice();
+
+            for (String element : elementsToCalculateTime) {
+                if (Utils.isLink(element)) {
+                    //It is a link
+
+                    //Get start and end device
+                    Pair<String, String> devices = Utils.getLinkStartAndEndDevices(element);
+                    //Get utilization value for this link
+                    if (devices.getKey().equals(Utils.START)) {
+                        //In our setup the start device=end device=the current device
+                        String endDevice = devices.getValue();
+                        devices = new Pair<>(startLocationMathematical, endDevice);
+                    }
+                    if (devices.getValue().equals(Utils.END)) {
+                        //In our setup the start device=end device=the current device
+                        String startDevice = devices.getKey();
+                        devices = new Pair<>(startDevice, endLocationMathematical);
+                    }
+
+                    //We should have already calculated the value when the optimizer picked it
+                    Double linkTiming = time_links.get(element);
+                    if (linkTiming == null) {
+                        System.out.println("ERROR link timing value not available");
+                    }
+
+                    //We should have already calculated the value when the optimizer picked it
+                    Double energy_link = energy_links.get(element);
+                    if (energy_link == null) {
+                        System.out.println("ERROR link energy value not available");
+                    }
+
+                    Double energy_residual_link = energy_residual_links.get(element);
+                    if (energy_residual_link == null) {
+                        //Calculate it
+                        Pair<String, String> linkSplit = Utils.splitLinkName(element);
+                        getLinkMarginalEnergyConsumption(linkSplit.getKey(), linkSplit.getValue(), startLocationMathematical, endLocationMathematical);
+                    }
+
+                } else {
+                    //It is a node
+                    //Get device name and function instance name
+                    Pair<String, String> deviceAndFunction = Utils.splitLongFunctionInstanceName(element);
+
+                    //We should have already calculated the value when the optimizer picked it
+                    Double deviceTiming = time_devices.get(element);
+                    if (deviceTiming == null) {
+                        System.out.println("ERROR device timing value not available");
+                    }
+
+                    //We should have already calculated the value when the optimizer picked it
+                    Double energy_device = energy_devices.get(element);
+                    if (energy_device == null) {
+                        System.out.println("ERROR device energy value not available");
+                    }
+
+                    Double energy_residual_device = energy_residual_devices.get(element);
+                    if (energy_residual_device == null) {
+                        //Calculate it
+                        getInstanceMarginalEnergyConsumption(element);
+                    }
+                }
+            }
+            //Calculate the total - sum over the elements
+            double timeLink = 0;
+            double timeDevice = 0;
+            double timeLinkDevice = 0;
+            for (String element : elementsToCalculateTime) {
+                if (Utils.isLink(element)) {
+                    timeLink += time_links.get(element);
+                } else {
+                    timeDevice += time_devices.get(element);
+                }
+            }
+            timeLinkDevice = timeLink + timeDevice;
+
+            double energyLink = 0;
+            double energyDevice = 0;
+            double energyLinkDevice = 0;
+            for (String element : elementsToCalculateTime) {
+                if (Utils.isLink(element)) {
+                    energyLink += energy_links.get(element);
+                } else {
+                    energyDevice += energy_devices.get(element);
+                }
+            }
+            energyLinkDevice = energyLink + energyDevice;
+
+            double energyResLink = 0;
+            double energyResDevice = 0;
+            double energyResLinkDevice = 0;
+            for (String element : elementsToCalculateTime) {
+                if (Utils.isLink(element)) {
+                    energyResLink += energy_residual_links.get(element);
+                } else {
+                    energyResDevice += energy_residual_devices.get(element);
+                }
+            }
+            energyResLinkDevice = energyResLink + energyResDevice;
+
+            //Print the results in a usable way
+            System.out.println("Evaluated placement: Time " + timeLinkDevice + " Energy " + energyLinkDevice + " Residual energy " + energyResLinkDevice + "In details - time link "+ timeLink + " time device " + timeDevice + " energy link " + energyLink + " energy device " + energyDevice + " energy res link "+energyResLink + " energy res device "+energyResDevice);
+        }
+    }
+
+    private static Device createEdgeDevice(String nodeName, long mips,
+                                           String deviceType) {
+
+         Device edgedevice = null;
+        try {
+            edgedevice = new Device(nodeName, deviceType,mips);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return edgedevice;
+    }
+
+    public void clear(){
+        time_devices.clear();
+        time_links.clear();
+        energy_links.clear();
+        energy_devices.clear();
+        energy_residual_links.clear();
+        energy_residual_devices.clear();
+    }
+
+    public void createUtilizationData(int scenarioIndex, int repetitionNumber, Boolean usingUniformLoadDistribution,int standardDeviation, Boolean linksAreLoaded){
+        //First create a list of all element that need to have information
+        //Devices
+        List<String> deviceNames = new ArrayList<>();
+        for (Device device : edgeDevices) {
+            if (device.getName().contains("gateway")) {//TODO: with current setup should be all of them so function not needed
+                deviceNames.add(device.getName());
+            }
+        }
+        //Links
+        List<String> linkNames = new ArrayList<>();
+        for (String device1 : deviceNames) {
+            for (String device2 : deviceNames) {
+                if (!device1.equals(device2)) {
+                    //Self loops are not interesting
+                    linkNames.add(device1 + "=>" + device2);
+                }
+            }
+        }
+
+        //Non-uniform
+        Distribution utilizationDistribution = new NormalDistribution(scenarioIndex * 10, standardDeviation, Config.SEED +repetitionNumber+scenarioIndex);
+
+        //Then create the information
+        utilization = new HashMap<>();
+        for (String element : deviceNames) {
+            //Get a value from the chosen distribution
+            //For this scenario - not random
+            Double randomUtil = utilizationDistribution.getNextValue();
+            if (randomUtil < 0) {
+                randomUtil = 0.0;
+            }
+            if (randomUtil > 100) {
+                randomUtil = 100.0;
+            }
+            if(usingUniformLoadDistribution){
+                randomUtil= scenarioIndex*10.0;
+            }
+            utilization.put(element, randomUtil);
+        }
+        for (String element : linkNames) {
+            //Get a value from the chosen distribution
+            //For this scenario - not random
+            Double randomUtil = utilizationDistribution.getNextValue();
+            if (randomUtil <0){
+                randomUtil=0.0;
+            }
+            if (randomUtil >100){
+                randomUtil=100.0;
+            }
+            //Not random variant
+            if(!linksAreLoaded){
+                randomUtil = 0.0;
+            }
+            utilization.put(element, randomUtil);
+        }
+        System.out.println(utilization);
+    }
+
+    public List<Device> getEdgeDevices(){
+        return edgeDevices;
+    }
+}
diff --git a/Code/src/utils/Config.java b/Code/src/utils/Config.java
new file mode 100644
index 0000000..2a30df4
--- /dev/null
+++ b/Code/src/utils/Config.java
@@ -0,0 +1,14 @@
+package utils;
+
+public class Config {
+	public static final int LOAD_SCENARIO_NUMBER = 11;
+	public static final int REPETITION_NUMBER = 25;
+	public static final int DEFAULT_LINK_CAPACITY =500;//MBytes/sec
+	public static final int DEFAULT_LINK_P_IDLE =1;
+	public static final int DEFAULT_LINK_P_DYN =9;
+	public static final int DEFAULT_DEVICE_CAPACITY =500;//MI
+	public static final int DEFAULT_DEVICE_P_IDLE =98;//W - Data fron Ahvar - Parasilo zero core was 750
+	public static final int DEFAULT_DEVICE_P_DYN =148;//W - Data fron Ahvar - Parasilo one core was 250
+	public static final int INFINITE = 10000;//Very big number so that link/devices with 100% utilization are discarded as impossible
+	public static final int SEED = 165746;
+}
diff --git a/Code/src/utils/Distribution.java b/Code/src/utils/Distribution.java
new file mode 100644
index 0000000..902ad78
--- /dev/null
+++ b/Code/src/utils/Distribution.java
@@ -0,0 +1,14 @@
+package utils;
+
+import java.util.Random;
+
+public abstract class Distribution {
+
+	protected Random random;
+	public abstract double getNextValue();
+	
+	public void setRandom(Random random) {
+		this.random = random;
+	}
+
+}
diff --git a/Code/src/utils/NormalDistribution.java b/Code/src/utils/NormalDistribution.java
new file mode 100644
index 0000000..70e9b1a
--- /dev/null
+++ b/Code/src/utils/NormalDistribution.java
@@ -0,0 +1,29 @@
+package utils;
+
+import java.util.Random;
+
+public class NormalDistribution extends Distribution{
+
+	private double mean;
+	private double stdDev;
+	
+	public NormalDistribution(double mean, double stdDev, long seed) {
+		setMean(mean);
+		setStdDev(stdDev);
+		setRandom(new Random(seed));
+	}
+	
+	@Override
+	public double getNextValue() {
+		return random.nextGaussian()*stdDev + mean;
+	}
+
+	public void setMean(double mean) {
+		this.mean = mean;
+	}
+
+	public void setStdDev(double stdDev) {
+		this.stdDev = stdDev;
+	}
+
+}
diff --git a/Code/src/utils/Triple.java b/Code/src/utils/Triple.java
new file mode 100644
index 0000000..505487f
--- /dev/null
+++ b/Code/src/utils/Triple.java
@@ -0,0 +1,40 @@
+package utils;
+
+public class Triple<L, M, R> {
+
+    private L left;
+    private M middle;
+    private R right;
+
+    public Triple(L left, M middle, R right) {
+        this.left = left;
+        this.middle = middle;
+        this.right = right;
+    }
+
+    public L getLeft() {
+        return left;
+    }
+
+
+    public void setLeft(L left) {
+        this.left=left;
+    }
+
+    public M getMiddle() {
+        return middle;
+    }
+
+    public void setMiddle(M middle) {
+        this.middle=middle;
+    }
+
+    public R getRight() {
+        return right;
+    }
+
+    public void setRight(R right) {
+        this.right=right;
+    }
+}
+
diff --git a/Code/src/utils/Utils.java b/Code/src/utils/Utils.java
new file mode 100644
index 0000000..9cfd7ad
--- /dev/null
+++ b/Code/src/utils/Utils.java
@@ -0,0 +1,73 @@
+package utils;
+
+import org.apache.commons.math3.util.Pair;
+
+public class Utils {
+	public static Pair<String,String> splitLongFunctionInstanceName(String longName){
+		//Right now the assumption is that the two names are separated with a dash
+		//OBS: Do not name devices or functions with a dash inside then!
+		Pair<String,String> split;
+		if(longName.contains("-")){
+			String[] parts = longName.split("-");
+			split=new Pair<>(parts[0],parts[1]);
+		}
+		else{
+			//The longName is for a start or end, then there is no instance
+			split=new Pair<>(longName,"");
+		}
+		return split;
+	}
+
+	public static  Pair<String,String> splitLinkName(String longName){
+		//Right now the assumption is that the two names are separated with =>
+		//OBS: Do not name devices or functions with => inside then!
+		String[] parts = longName.split("=>");
+		Pair<String,String> split=new Pair<>(parts[0],parts[1]);
+		return split;
+	}
+
+	public static boolean isLink(String name){
+		//OBS this is hardcoding
+		//Right now the assumption is that the two names are separated with =>
+		return name.contains("=>");
+	}
+
+	public static Pair<String,String> getLinkStartAndEndDevices(String linkName){
+		String startDevice;
+		String endDevice;
+		Pair<String,String> split = splitLinkName(linkName);
+		if(split.getKey().equals(START)){
+			startDevice=START;
+		}else{
+			Pair<String,String> split2=splitLongFunctionInstanceName(split.getKey());
+			startDevice=split2.getKey();
+		}
+		if(split.getValue().equals(END)){
+			endDevice=END;
+		}else{
+			Pair<String,String> split2=splitLongFunctionInstanceName(split.getValue());
+			endDevice=split2.getKey();
+		}
+		Pair<String,String> result=new Pair<>(startDevice,endDevice);
+		return result;
+	}
+
+	public static String getTargetFunction(String linkName){
+		String result;
+		Pair<String,String> split = splitLinkName(linkName);
+		if(split.getValue().equals(END)){
+			result=END;
+		}else if(split.getValue().equals(START)){
+			//Could be self loop
+			result=START;
+		}		else{
+			Pair<String,String> split2=splitLongFunctionInstanceName(split.getValue());
+			result=split2.getValue();
+		}
+		return result;
+	}
+
+	public static  String START = "S";
+	public static String END = "E";
+
+}
-- 
GitLab