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 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 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 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 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