From 9efbbe762225c329ba0a145f4d7601016b69c738 Mon Sep 17 00:00:00 2001 From: erikkko Date: Tue, 19 Mar 2024 17:40:10 +0100 Subject: [PATCH 1/5] pils --- CSV/test_demand.csv | 6 + ...amework,Version=v4.8.AssemblyAttributes.cs | 4 + .../FirstPythonComponent.AssemblyInfo.cs | 3 +- ...stPythonComponent.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 4 +- .../net48/FirstPythonComponent.assets.cache | Bin 48 -> 13966 bytes ...onComponent.csproj.AssemblyReference.cache | Bin 22658 -> 19674 bytes ...stPythonComponent.csproj.nuget.dgspec.json | 16 +- .../FirstPythonComponent.csproj.nuget.g.props | 6 +- .../obj/project.assets.json | 178 +++++++++++++----- .../obj/project.nuget.cache | 46 ++--- Matching/helper_methods_PDF.py | 8 +- Matching/matching.py | 10 + TestCases/Data/CSV/gh_demand.csv | 22 +-- TestCases/Data/CSV/gh_demand1.csv | 11 ++ TestCases/Data/CSV/gh_supply.csv | 22 +-- TestCases/Data/CSV/gh_supply1.csv | 11 ++ TestCases/Data/CSV/test_demand.csv | 5 + TestCases/Data/CSV/test_demand.xlsx | Bin 0 -> 9867 bytes TestCases/Data/CSV/test_supply.csv | 5 + TestCases/Data/CSV/test_supply.xlsx | Bin 0 -> 10131 bytes TestCases/study_case_gh1.py | 101 ++++++++++ TestCases/study_case_gh2.py | 114 +++++++++++ 23 files changed, 464 insertions(+), 110 deletions(-) create mode 100644 CSV/test_demand.csv create mode 100644 GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/.NETFramework,Version=v4.8.AssemblyAttributes.cs create mode 100644 TestCases/Data/CSV/gh_demand1.csv create mode 100644 TestCases/Data/CSV/gh_supply1.csv create mode 100644 TestCases/Data/CSV/test_demand.csv create mode 100644 TestCases/Data/CSV/test_demand.xlsx create mode 100644 TestCases/Data/CSV/test_supply.csv create mode 100644 TestCases/Data/CSV/test_supply.xlsx create mode 100644 TestCases/study_case_gh1.py create mode 100644 TestCases/study_case_gh2.py diff --git a/CSV/test_demand.csv b/CSV/test_demand.csv new file mode 100644 index 00000000..be372fd4 --- /dev/null +++ b/CSV/test_demand.csv @@ -0,0 +1,6 @@ +;Height ;Width +0;2,0;1,0 +1;2,0;2,0 +2;1,5;1,5 +3;1,0;1,5 +4;1,0;2,5 diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/.NETFramework,Version=v4.8.AssemblyAttributes.cs new file mode 100644 index 00000000..15efebfc --- /dev/null +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/.NETFramework,Version=v4.8.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs index 8fb8d6ee..821ca7d6 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs @@ -1,7 +1,6 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -15,7 +14,7 @@ [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyDescriptionAttribute("Description of FirstPythonComponent")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+0930ee02e133e3c4ace332d0bc367c90aa435618")] [assembly: System.Reflection.AssemblyProductAttribute("FirstPythonComponent")] [assembly: System.Reflection.AssemblyTitleAttribute("FirstPythonComponent")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache index 981ae9a1..87a283df 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache @@ -1 +1 @@ -5f18d4b15a818b2f413df39510d3990a80cdec30 +7c8727131e225f14b46d5ca46375eed4e002d479db99a3f4cda1b5265d8198c6 diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.GeneratedMSBuildEditorConfig.editorconfig b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.GeneratedMSBuildEditorConfig.editorconfig index 19aa0dbc..5681e3e5 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.GeneratedMSBuildEditorConfig.editorconfig +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.GeneratedMSBuildEditorConfig.editorconfig @@ -1,3 +1,5 @@ is_global = true build_property.RootNamespace = FirstPythonComponent -build_property.ProjectDir = C:\Users\sverremh\source\repos\FirstPythonComponent\FirstPythonComponent\ +build_property.ProjectDir = C:\Users\kollb\OneDrive - NTNU\Skole\5 klasse\Master\MasterVS\Master-Thesis-NTNU\GrasshopperSolution\C#_Python_Component\FirstPythonComponent\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.assets.cache b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.assets.cache index 820f972c129fd22e3aa5562231fb9d99d0860fd6..90f9ea2459be763ffa558770d3de5687e6c735ff 100644 GIT binary patch literal 13966 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 literal 48 zcmZQzU})fCU|{&QY?VvGr~8%*ed~heiqvn^_^G~cUR?i%$?uu&Dy*521ys@i!T`jX B5|RJ_ diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.csproj.AssemblyReference.cache b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.csproj.AssemblyReference.cache index 4a80d4e9691454ce1eda5e0e98146dbe385e3414..96fc78de549c88bdfee60016cafa6b6750780c0c 100644 GIT binary patch delta 1135 zcmZqL$arfeB;w5gCW?vxYn5@lp9%9Hpu3#pF zArQp@+&!C(`4o^0VFViD1$M_y{yMk=H}?uiGeUT41g#kvCQo!xo&49MZ?m8qo$R33H`z?{ zKYuM&)m)P+v=AmkR0rtP@Rwpy&7#|kFn6#stn1KZzb*of6cdm|(h zfhw0wmN$vxug0)@6T-YrW~_|-zGy1AEG;Jcn;RfhP3E_FIXO;@ixmo6O``H2H%c%tf;H zl9T5Mvbk5=rKr?B*kHqAo&iRZCniE+!Tr>l&YV+iJze0?VT<;@0S>8VZ zN!8MT4E}O7bL0azAURtixRO5%O$EqJyMrsh&fdJ)Gn5gUG5x~g;9lvQ{42Zz0Au)) Avj6}9 delta 3777 zcmb`KU2GIp6vuZ;8|qfeGA+~34y0=uopSgP^Uzba%R4x-+xP z%t8wbltL5;R`D2A)PzJ6KO%`T4?c>Iz8LXAA`j5SXJbrAOf-sjX1gCSSJ;WX?9T3- zx%YSf=bZn&bLTx~?kna^q4@7Vep!C`$T!9}+$$M`>f%8ds|tam&H<=s%DAC@ShRgf z`s!ZEAtoJsz4D6o^U^hpT^~aGsno`lK+v%V795?>SJn%6YfH7e&(x%&wSVkGMUO@f zlwH!i<+XVuFl2;YW9qM$&1RXj*BxsXC;ei1yOT*y#NvD##<;5u56Dtf=7ic1`Aey- zpKfh#z;J6>WhdSn3(JxsO{h3T0{CN+JcUtT_i*mlQ6Fl>Auh~Ccm)s5C@L?Y!KA3h z1Rh1=ac~AS?R~bqD82IQmF)}&UVEu>l$T{*n1tEtt>9ki6&Rb%#+)V}#k1ssd^0cS z5soOltl-Q;7>UU!ui^w3p5mfpUP7-ZlTsqV%eV!3yl9KZ>uV(!Znp==W8+xlRbMOa z*?DkR|00!3ySnmr5xc*uZOj;aEHgMEnm%o&IrQ{ta?m;xbB!$8w!shpngZ1tUcI7} zmCbw(*BTJ(E>IYc7tSbT5{t&eal|PzVmKzMygb2$iJr~Kjoew`nmxHXK%FE!sE5N3 z>+SGmT?y0$HfU)5k4(kq3=Q`FcC(l_n8HcH>GH3}Tk?q%l@lYJ93g*VNVwW`1i0Ba z58rKkP%%rTaKqC23lx&`)=1W^5~K(pHw#2C*1@)VdlqG+A;nIc^;l^5j6yMMh2r;y zn#b$00!}uSE=f0^OS{=v#8kXR5oMvF2_9_vh=Oy~A`ThmxhEr4LjPu?T8vaho6gYm zakw_ZT6C5IWl1BaYXuo*=@X#J`V(qQ5|xZ45U`Ko1U|r?GAB+4D|cU_fW2x(Egh`f zZGRltA~mJ!NjM{e^dzJQ)+Eup|hQ_&De6R;4V`9sfMA z-chLW=h=A5D^m>Vm8T9esPm$cU5`4Z?QI*l11mv?(|j?Sucy4*VA9`C!L;D*1?pvB zb{VohN~(K1!TggAnN!NORl#4)y_`9veT6GYw#rysiW1B8=mweD{#x)*`bIX9sg_?^ zl?G7_ms>AVbV^xW1Ii;B@?gee*mqu7f)Ijnpu&+v5{&%ke6pUw3_s%0J)w#w`% zjdza18n(`=#Kb8D>Ca(*{&wT@XQdl5LP8|up|nC{payirPumZ(LuN#0$7{QpQ42)r zbJTcpVnRRn_>doYu*^>w=NLbR7dtA9jpqA~`wyR{Zf#Tl-$_bI&n)nQB+nQV`?3{8 z&H;-DyuHTlY$2ib^I+e>vpj9(Rd8j;#m$UR`0C+}9ji7QbGx&PZq7{ImlQ}DhZVGs z537=Fc(>*Z)G-z3D0`fipHN);k`>pE1UIsjJ^zE?CX$95aJ%yqd)U18VE0-$ z({*Cf+|6>~Vk{;^C5?o5F)T$$3n}OrKThGf*7dwm7J5Fuec=er1cTitDa~TR0P}ec zD`eL&ofQ{rWLPKeB@qvGO7X1CFhCvgY-o}_PLr(~Dtg|bNuGet $(MSBuildThisFileDirectory)project.assets.json $(UserProfile)\.nuget\packages\ - C:\Users\sverremh\.nuget\packages\ + C:\Users\kollb\.nuget\packages\ PackageReference - 6.0.1 + 6.8.0 - + \ No newline at end of file diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.assets.json b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.assets.json index 0c2f3996..7b88ef47 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.assets.json +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.assets.json @@ -8,11 +8,17 @@ "RhinoCommon": "[7.13.21348.13001]" }, "compile": { - "lib/net48/GH_IO.dll": {}, - "lib/net48/Grasshopper.dll": {} + "lib/net48/GH_IO.dll": { + "related": ".XML" + }, + "lib/net48/Grasshopper.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net48/_._": {} + "lib/net48/_._": { + "related": ".XML" + } }, "build": { "build/Grasshopper.targets": {} @@ -24,19 +30,27 @@ "System.Threading.Tasks.Extensions": "4.5.4" }, "compile": { - "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll": {} + "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll": {} + "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } } }, "Microsoft.Extensions.DependencyInjection.Abstractions/2.0.0": { "type": "package", "compile": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } }, "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } } }, "Microsoft.Extensions.DependencyModel/6.0.0": { @@ -53,10 +67,14 @@ "System.Runtime" ], "compile": { - "lib/net461/Microsoft.Extensions.DependencyModel.dll": {} + "lib/net461/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net461/Microsoft.Extensions.DependencyModel.dll": {} + "lib/net461/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } } }, "Microsoft.Extensions.Logging/2.0.0": { @@ -67,19 +85,27 @@ "Microsoft.Extensions.Options": "2.0.0" }, "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } }, "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } } }, "Microsoft.Extensions.Logging.Abstractions/2.0.0": { "type": "package", "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } }, "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } } }, "Microsoft.Extensions.Options/2.0.0": { @@ -89,10 +115,14 @@ "Microsoft.Extensions.Primitives": "2.0.0" }, "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Options.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } }, "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Options.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } } }, "Microsoft.Extensions.Primitives/2.0.0": { @@ -101,21 +131,31 @@ "System.Runtime.CompilerServices.Unsafe": "4.4.0" }, "compile": { - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } }, "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } } }, "RhinoCommon/7.13.21348.13001": { "type": "package", "compile": { - "lib/net48/Eto.dll": {}, + "lib/net48/Eto.dll": { + "related": ".xml" + }, "lib/net48/Rhino.UI.dll": {}, - "lib/net48/RhinoCommon.dll": {} + "lib/net48/RhinoCommon.dll": { + "related": ".XML" + } }, "runtime": { - "lib/net48/_._": {} + "lib/net48/_._": { + "related": ".xml" + } }, "build": { "build/RhinoCommon.targets": {} @@ -129,10 +169,14 @@ "System.Core" ], "compile": { - "lib/net47/Serilog.dll": {} + "lib/net47/Serilog.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net47/Serilog.dll": {} + "lib/net47/Serilog.dll": { + "related": ".xml" + } } }, "Serilog.Extensions.Logging/3.1.0": { @@ -142,10 +186,14 @@ "Serilog": "2.9.0" }, "compile": { - "lib/netstandard2.0/Serilog.Extensions.Logging.dll": {} + "lib/netstandard2.0/Serilog.Extensions.Logging.dll": { + "related": ".xml" + } }, "runtime": { - "lib/netstandard2.0/Serilog.Extensions.Logging.dll": {} + "lib/netstandard2.0/Serilog.Extensions.Logging.dll": { + "related": ".xml" + } } }, "Serilog.Sinks.File/5.0.0": { @@ -154,10 +202,14 @@ "Serilog": "2.10.0" }, "compile": { - "lib/net45/Serilog.Sinks.File.dll": {} + "lib/net45/Serilog.Sinks.File.dll": { + "related": ".pdb;.xml" + } }, "runtime": { - "lib/net45/Serilog.Sinks.File.dll": {} + "lib/net45/Serilog.Sinks.File.dll": { + "related": ".pdb;.xml" + } } }, "System.Buffers/4.5.1": { @@ -166,10 +218,14 @@ "mscorlib" ], "compile": { - "ref/net45/System.Buffers.dll": {} + "ref/net45/System.Buffers.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net461/System.Buffers.dll": {} + "lib/net461/System.Buffers.dll": { + "related": ".xml" + } } }, "System.Memory/4.5.4": { @@ -184,10 +240,14 @@ "mscorlib" ], "compile": { - "lib/net461/System.Memory.dll": {} + "lib/net461/System.Memory.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net461/System.Memory.dll": {} + "lib/net461/System.Memory.dll": { + "related": ".xml" + } } }, "System.Numerics.Vectors/4.5.0": { @@ -197,10 +257,14 @@ "mscorlib" ], "compile": { - "ref/net46/System.Numerics.Vectors.dll": {} + "ref/net46/System.Numerics.Vectors.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net46/System.Numerics.Vectors.dll": {} + "lib/net46/System.Numerics.Vectors.dll": { + "related": ".xml" + } } }, "System.Runtime.CompilerServices.Unsafe/6.0.0": { @@ -209,10 +273,14 @@ "mscorlib" ], "compile": { - "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {} + "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": {} + "lib/net461/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } } }, "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { @@ -242,10 +310,14 @@ "System.Runtime.CompilerServices.Unsafe": "6.0.0" }, "compile": { - "lib/net461/System.Text.Encodings.Web.dll": {} + "lib/net461/System.Text.Encodings.Web.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net461/System.Text.Encodings.Web.dll": {} + "lib/net461/System.Text.Encodings.Web.dll": { + "related": ".xml" + } } }, "System.Text.Json/6.0.0": { @@ -261,10 +333,14 @@ "System.ValueTuple": "4.5.0" }, "compile": { - "lib/net461/System.Text.Json.dll": {} + "lib/net461/System.Text.Json.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net461/System.Text.Json.dll": {} + "lib/net461/System.Text.Json.dll": { + "related": ".xml" + } }, "build": { "build/_._": {} @@ -279,10 +355,14 @@ "mscorlib" ], "compile": { - "lib/net461/System.Threading.Tasks.Extensions.dll": {} + "lib/net461/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } }, "runtime": { - "lib/net461/System.Threading.Tasks.Extensions.dll": {} + "lib/net461/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } } }, "System.ValueTuple/4.5.0": { @@ -294,7 +374,9 @@ "ref/net47/System.ValueTuple.dll": {} }, "runtime": { - "lib/net47/System.ValueTuple.dll": {} + "lib/net47/System.ValueTuple.dll": { + "related": ".xml" + } } } } @@ -846,19 +928,19 @@ ] }, "packageFolders": { - "C:\\Users\\sverremh\\.nuget\\packages\\": {} + "C:\\Users\\kollb\\.nuget\\packages\\": {} }, "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\sverremh\\source\\repos\\FirstPythonComponent\\FirstPythonComponent\\FirstPythonComponent.csproj", + "projectUniqueName": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", "projectName": "FirstPythonComponent", - "projectPath": "C:\\Users\\sverremh\\source\\repos\\FirstPythonComponent\\FirstPythonComponent\\FirstPythonComponent.csproj", - "packagesPath": "C:\\Users\\sverremh\\.nuget\\packages\\", - "outputPath": "C:\\Users\\sverremh\\source\\repos\\FirstPythonComponent\\FirstPythonComponent\\obj\\", + "projectPath": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", + "packagesPath": "C:\\Users\\kollb\\.nuget\\packages\\", + "outputPath": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\sverremh\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Users\\kollb\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -906,7 +988,7 @@ "version": "[5.0.0, )" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.102\\RuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.101\\RuntimeIdentifierGraph.json" } } } diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.nuget.cache b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.nuget.cache index a09fe362..c6414570 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.nuget.cache +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.nuget.cache @@ -1,30 +1,30 @@ { "version": 2, - "dgSpecHash": "Ug8Cak8kLExTWp6LN5ww0wTd20TVPvP8EQrVDmnskKVPvAVmcUbNtchmPrahq/IMzMs+HVoZmFCe6uM7BZHgXw==", + "dgSpecHash": "rOu7UNz3zu0jwcM7nXAVeQKAIw2x4xi33TwIAGQERmGyJAYYtuSXxHdPcpbnmqQ+60Gc7XbtG3HRSXlISyCHUg==", "success": true, - "projectFilePath": "C:\\Users\\sverremh\\source\\repos\\FirstPythonComponent\\FirstPythonComponent\\FirstPythonComponent.csproj", + "projectFilePath": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", "expectedPackageFiles": [ - "C:\\Users\\sverremh\\.nuget\\packages\\grasshopper\\7.13.21348.13001\\grasshopper.7.13.21348.13001.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\2.0.0\\microsoft.extensions.dependencyinjection.abstractions.2.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\microsoft.extensions.dependencymodel\\6.0.0\\microsoft.extensions.dependencymodel.6.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\microsoft.extensions.logging\\2.0.0\\microsoft.extensions.logging.2.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\2.0.0\\microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\microsoft.extensions.options\\2.0.0\\microsoft.extensions.options.2.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\microsoft.extensions.primitives\\2.0.0\\microsoft.extensions.primitives.2.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\rhinocommon\\7.13.21348.13001\\rhinocommon.7.13.21348.13001.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\serilog\\2.12.0\\serilog.2.12.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\serilog.extensions.logging\\3.1.0\\serilog.extensions.logging.3.1.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\serilog.sinks.file\\5.0.0\\serilog.sinks.file.5.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\system.runtime.interopservices.runtimeinformation\\4.3.0\\system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\system.text.encodings.web\\6.0.0\\system.text.encodings.web.6.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\system.text.json\\6.0.0\\system.text.json.6.0.0.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512", - "C:\\Users\\sverremh\\.nuget\\packages\\system.valuetuple\\4.5.0\\system.valuetuple.4.5.0.nupkg.sha512" + "C:\\Users\\kollb\\.nuget\\packages\\grasshopper\\7.13.21348.13001\\grasshopper.7.13.21348.13001.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\2.0.0\\microsoft.extensions.dependencyinjection.abstractions.2.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\microsoft.extensions.dependencymodel\\6.0.0\\microsoft.extensions.dependencymodel.6.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\microsoft.extensions.logging\\2.0.0\\microsoft.extensions.logging.2.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\2.0.0\\microsoft.extensions.logging.abstractions.2.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\microsoft.extensions.options\\2.0.0\\microsoft.extensions.options.2.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\microsoft.extensions.primitives\\2.0.0\\microsoft.extensions.primitives.2.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\rhinocommon\\7.13.21348.13001\\rhinocommon.7.13.21348.13001.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\serilog\\2.12.0\\serilog.2.12.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\serilog.extensions.logging\\3.1.0\\serilog.extensions.logging.3.1.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\serilog.sinks.file\\5.0.0\\serilog.sinks.file.5.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\system.numerics.vectors\\4.5.0\\system.numerics.vectors.4.5.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\system.runtime.interopservices.runtimeinformation\\4.3.0\\system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\system.text.encodings.web\\6.0.0\\system.text.encodings.web.6.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\system.text.json\\6.0.0\\system.text.json.6.0.0.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512", + "C:\\Users\\kollb\\.nuget\\packages\\system.valuetuple\\4.5.0\\system.valuetuple.4.5.0.nupkg.sha512" ], "logs": [] } \ No newline at end of file diff --git a/Matching/helper_methods_PDF.py b/Matching/helper_methods_PDF.py index f8c33fa0..73f566a9 100644 --- a/Matching/helper_methods_PDF.py +++ b/Matching/helper_methods_PDF.py @@ -93,7 +93,7 @@ def extract_results_df_pdf(dict_list, constants): results_dict["Constants used"] = used_constants return results_dict -def create_random_data_supply_pdf_reports(supply_count, length_min, length_max, area_min, area_max, materials, supply_coords): +def create_random_data_supply_pdf_reports(supply_count, length_min, length_max, width_min, width_max, height_min, height_max, area_min, area_max, materials, supply_coords): """Creates random data for the case studies in the master thesis Args: @@ -122,6 +122,8 @@ def create_random_data_supply_pdf_reports(supply_count, length_min, length_max, np.random.RandomState(2023) supply = pd.DataFrame() supply['Length'] = np.round((length_max - length_min) * np.random.random_sample(size = supply_count) + length_min, 2) + supply['Width'] = np.round((width_max - width_min) * np.random.random_sample(size = supply_count) + width_min, 2) + supply['Height'] = np.round((height_max - height_min) * np.random.random_sample(size = supply_count) + height_min, 2) supply['Area'] = 0 supply['Moment of Inertia'] = 0 supply['Material'] = "" @@ -149,7 +151,7 @@ def create_random_data_supply_pdf_reports(supply_count, length_min, length_max, supply.loc[row,"Location"]=supply_coords.loc[lokasjon,"Location"] return supply -def create_random_data_demand_pdf_reports(demand_count, length_min, length_max, area_min, area_max, materials): +def create_random_data_demand_pdf_reports(demand_count, length_min, length_max, width_min, width_max, height_min, height_max, area_min, area_max, materials): """Creates random data for the case studies in the master thesis Args: @@ -175,6 +177,8 @@ def create_random_data_demand_pdf_reports(demand_count, length_min, length_max, np.random.RandomState(2023) demand = pd.DataFrame() demand['Length'] = np.round((length_max - length_min) * np.random.random_sample(size = demand_count) + length_min, 2) + demand['Width'] = np.round((width_max - width_min) * np.random.random_sample(size = demand_count) + width_min, 2) + demand['Height'] = np.round((height_max - height_min) * np.random.random_sample(size = demand_count) + height_min, 2) demand['Area'] = 0 demand['Moment of Inertia'] = 0 demand['Material'] = "" diff --git a/Matching/matching.py b/Matching/matching.py index 27c3b01e..238c8d74 100644 --- a/Matching/matching.py +++ b/Matching/matching.py @@ -164,6 +164,16 @@ def evaluate_incidence(self): # TODO add 'Distance' 'Price' 'Material' 'Density' 'Imperfections' 'Is_column' 'Utilisation' 'Group' 'Quality' 'Max_height' ? #TODO Create standalone method for evaluating one column Rj of the incidence matrix. Need this for cutoffs in greedy algorithm as well. start = time.time() + #constraints = [] + + """ + for index, row in self.supply.iterrows(): + if (row[5] == "Window" or row[5] == "Door"): + self.constraints = {'Width' : '==', 'Height' : '==', 'Material' : '=='} + #elif (row[5] == "Slab"): + # self.constraints = {'Length' : '>=', 'Width' : '==', 'Height' : '==', 'Material' : '=='} + """ + bool_array = np.full((self.demand.shape[0], self.supply.shape[0]), True) # initiate empty array for param, compare in self.constraints.items(): cond_list = [] diff --git a/TestCases/Data/CSV/gh_demand.csv b/TestCases/Data/CSV/gh_demand.csv index 06dc2e6a..f42552c2 100644 --- a/TestCases/Data/CSV/gh_demand.csv +++ b/TestCases/Data/CSV/gh_demand.csv @@ -1,11 +1,11 @@ -,Length,Area,Moment of Inertia,Material,Manufacturer,Latitude,Longitude -0,3.64,0.00103,1.71e-06,Steel,0,0,0 -1,4.85,0.00334,2.77e-05,Steel,0,0,0 -2,1.85,0.00334,2.77e-05,Steel,0,0,0 -3,2.48,0.2702056869206727,0.006084259437022716,Timber,0,0,0 -4,5.07,0.22091162218958293,0.004066828734869419,Timber,0,0,0 -5,8.34,0.26060398397918644,0.005659536372152004,Timber,0,0,0 -6,9.54,0.00103,1.71e-06,Steel,0,0,0 -7,6.72,0.27548075638237124,0.006324137261416948,Timber,0,0,0 -8,1.16,0.16669348813246831,0.0023155599154807793,Timber,0,0,0 -9,6.06,0.18396420392348284,0.002820235693766732,Timber,0,0,0 +,Length,Width,Height,Area,Moment of Inertia,Material,Manufacturer,Latitude,Longitude +0,8.88,2.93,1.85,0.00164,5.41e-06,Steel,0,0,0 +1,3.42,8.45,2.7,0.2521618286717396,0.005298798986589646,Timber,0,0,0 +2,3.78,8.66,2.69,0.2822683200581487,0.0066396170423707905,Timber,0,0,0 +3,9.38,6.14,9.2,0.26728199288525945,0.005953305310059657,Timber,0,0,0 +4,9.19,1.25,7.53,0.00164,5.41e-06,Steel,0,0,0 +5,2.63,2.16,6.18,0.1912968402601083,0.0030495400911251156,Timber,0,0,0 +6,3.92,1.02,2.39,0.00164,5.41e-06,Steel,0,0,0 +7,3.77,2.32,2.16,0.00239,1.32e-05,Steel,0,0,0 +8,3.95,6.15,4.91,0.00103,1.71e-06,Steel,0,0,0 +9,6.36,3.81,4.4,0.1562427518946861,0.002034316459968703,Timber,0,0,0 diff --git a/TestCases/Data/CSV/gh_demand1.csv b/TestCases/Data/CSV/gh_demand1.csv new file mode 100644 index 00000000..754ac632 --- /dev/null +++ b/TestCases/Data/CSV/gh_demand1.csv @@ -0,0 +1,11 @@ +,Length,Width,Height,Area,Moment of Inertia,Material,Manufacturer,Latitude,Longitude +0,2.64,2.8,8.94,0.28209038056747726,0.006631248567392012,Timber,0,0,0 +1,1.01,1.67,9.25,0.2033253844994837,0.003445100998488574,Timber,0,0,0 +2,3.84,1.87,8.07,0.2647366317011006,0.0058404570137036834,Timber,0,0,0 +3,2.31,5.31,6.73,0.15692491317156831,0.002052119031158688,Timber,0,0,0 +4,9.61,7.69,9.84,0.1789800678250585,0.002669488723221878,Timber,0,0,0 +5,3.27,1.3,5.65,0.24315867408799574,0.004927178398686011,Timber,0,0,0 +6,1.47,7.44,3.5,0.00201,8.69e-06,Steel,0,0,0 +7,7.66,5.38,1.66,0.00538,8.36e-05,Steel,0,0,0 +8,4.89,2.29,7.96,0.25177408751171315,0.00528251592852965,Timber,0,0,0 +9,7.05,6.24,2.32,0.00334,2.77e-05,Steel,0,0,0 diff --git a/TestCases/Data/CSV/gh_supply.csv b/TestCases/Data/CSV/gh_supply.csv index cea79b1a..f9ddd756 100644 --- a/TestCases/Data/CSV/gh_supply.csv +++ b/TestCases/Data/CSV/gh_supply.csv @@ -1,11 +1,11 @@ -,Length,Area,Moment of Inertia,Material,Location,Latitude,Longitude -0,1.61,0.00201,8.69e-06,Steel,Orkanger,63.3000,9.8468 -1,6.91,0.00239,1.32e-05,Steel,Tiller,63.3604,10.4008 -2,1.43,0.00103,1.71e-06,Steel,Storlien,63.3160,12.1018 -3,5.97,0.21944709548302138,0.004013085642994525,Timber,Orkanger,63.3000,9.8468 -4,3.34,0.00538,8.36e-05,Steel,Storlien,63.3160,12.1018 -5,7.06,0.00239,1.32e-05,Steel,Tiller,63.3604,10.4008 -6,3.6,0.1960950863738674,0.0032044402416645437,Timber,Gjovik,60.8941,10.5001 -7,2.17,0.00538,8.36e-05,Steel,Tiller,63.3604,10.4008 -8,7.31,0.22390606004317304,0.004177826977004751,Timber,Storlien,63.3160,12.1018 -9,1.42,0.00538,8.36e-05,Steel,Tiller,63.3604,10.4008 +,Length,Width,Height,Area,Moment of Inertia,Material,Location,Latitude,Longitude +0,5.64,5.88,2.15,0.26589155109639107,0.005891526412037062,Timber,Orkanger,63.3000,9.8468 +1,1.27,1.07,4.86,0.17651348476502932,0.0025964175253245197,Timber,Storlien,63.3160,12.1018 +2,9.4,9.3,7.98,0.24379455264462815,0.004952981991599531,Timber,Storlien,63.3160,12.1018 +3,6.13,7.66,4.77,0.2696940579260394,0.006061240406717825,Timber,Tiller,63.3604,10.4008 +4,8.78,9.51,6.95,0.00103,1.71e-06,Steel,Storlien,63.3160,12.1018 +5,2.71,8.51,1.78,0.00239,1.32e-05,Steel,Tiller,63.3604,10.4008 +6,4.71,7.07,3.07,0.00164,5.41e-06,Steel,Orkanger,63.3000,9.8468 +7,5.55,7.77,2.34,0.00164,5.41e-06,Steel,Gjovik,60.8941,10.5001 +8,7.71,8.56,9.86,0.2096207604057341,0.003661738599423182,Timber,Storlien,63.3160,12.1018 +9,1.47,5.02,2.04,0.00538,8.36e-05,Steel,Gjovik,60.8941,10.5001 diff --git a/TestCases/Data/CSV/gh_supply1.csv b/TestCases/Data/CSV/gh_supply1.csv new file mode 100644 index 00000000..7b3fd176 --- /dev/null +++ b/TestCases/Data/CSV/gh_supply1.csv @@ -0,0 +1,11 @@ +,Length,Width,Height,Area,Moment of Inertia,Material,Location,Latitude,Longitude +0,4.33,4.81,7.05,0.26037355017715463,0.0056495321359879384,Timber,Storlien,63.3160,12.1018 +1,1.77,6.76,5.97,0.00201,8.69e-06,Steel,Orkanger,63.3000,9.8468 +2,6.77,2.19,4.63,0.00239,1.32e-05,Steel,Orkanger,63.3000,9.8468 +3,5.24,5.29,4.51,0.00334,2.77e-05,Steel,Storlien,63.3160,12.1018 +4,8.69,3.01,8.09,0.18003273630664268,0.002700982178504761,Timber,Gjovik,60.8941,10.5001 +5,4.98,4.4,1.26,0.00103,1.71e-06,Steel,Storlien,63.3160,12.1018 +6,6.0,2.13,6.53,0.00201,8.69e-06,Steel,Tiller,63.3604,10.4008 +7,1.05,8.62,8.19,0.17565914664080487,0.0025713446498813156,Timber,Orkanger,63.3000,9.8468 +8,7.8,2.69,4.15,0.1790105743136291,0.002670398809674611,Timber,Storlien,63.3160,12.1018 +9,4.67,2.9,6.72,0.224476779399125,0.004199152040783619,Timber,Orkanger,63.3000,9.8468 diff --git a/TestCases/Data/CSV/test_demand.csv b/TestCases/Data/CSV/test_demand.csv new file mode 100644 index 00000000..c63e58fd --- /dev/null +++ b/TestCases/Data/CSV/test_demand.csv @@ -0,0 +1,5 @@ +,Length,Width,Height,Area,Moment of Inertia,Material,Manufacturer,Latitude,Longitude +0,0,2.0,2.0,0,0,Timber,0,0,0 +0,0,1.0,1.0,0,0,Timber,0,0,0 +0,0,2.5,2.0,0,0,Timber,0,0,0 +0,0,1.0,2.0,0,0,Timber,0,0,0 diff --git a/TestCases/Data/CSV/test_demand.xlsx b/TestCases/Data/CSV/test_demand.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7458cdad09daa2e68cb45e8a50459fbfe84bdc53 GIT binary patch literal 9867 zcmeHN^;aC()@|Ga1WOv%push`dlTHf(Z(f6@Sp+GG!h(wYk~!Lf(GjlEVz@PL4w2A znVGj{CNtk(@Lv5;wQAkkXRUkd?6c23=W3{+pb`Vn0hj;)fEJL=4smfr0ssim001HY zCbE%?i?b)#+0#th*A?tx^4P}-LX(Gz%$y5AMtuLj>%VvfDw4X?d$@2T4isBulGz+; z-6Sz9=PWu2nYgKF81{i2YI#EBb8~ApR?;OE(mRDu$*=A@8oilnO{{7-P(P2RK#XJc z(RD=%_sXmfK5kuSgCB(JbPM4y&Y{%Io?JTA%=>r7)^Ma$#KR?A<7*=1%~wSAzmyu= z$remkt(p$J*GKB0jN5PY6bOy;h49aK9$_ZWq^64PZ6Aj)1WToi;D=P|4Zb*&S0Ri} za;d!BfKgLo52g8b7ECp4iLEXt+m-_9`KL-;ia1vK`N5T^Qy zwyzC|qIp-TZmfwE>9Y|o-@`DJ>(Bcu(Cz_WH4YwELiOgY>rxl8F5d#Idxt^62ZT?H~-aOLebqSk&J%_vj*j&=z{G8C&In%?oa?4f8*$T9WMG4#E2?_f;b3{ znz@4^9-NPV-v7tV|6)S^W$G0$HPG+eyp9|=n_PerNUJ=PQf#5s4h&YB$A2G}&p^J= z@rZ&z8yJS75Y!fUJv6r<8ux90_Qxt;#moD|Pw4BPRYttNbo0VsWpYoEcdJopJNx$e0EG7R0;r>9Cv0D3ne8q@=WAvS z={%Or=pedz&Y_+;ph?Gf|D0z`p`S7LG{~@y@B7Cr-w%RVJ>>(3gP|{}OBNAw^-q!< zf4FQMMgai$u>b&k#LD5edUuh<{(n*HVnR~=Ww4dB|Q&I)t=8982J0{Wv#hn)VonNeUkR}cuhq( zy<)=X2p1b(ICyzq%|wBGYO*4MGN)zCxMfK_@Mhy&sqC~Z$q@q}BKAzL?}WRr+3tTS$aWG6O`#s`e z?mNA_Y5%%<5!AO}2eFe9m=iw1Ssvl0FRE8oeGG_Nq;w_##oonk8$x_dcdms@=5oh0 zb9qvxtF7$N#HRp=YbcP|0AUrKgrR1P0VyJg&3mcC#d`E~Sug3zw@KLiQ1aJ{;mrDu zC(5|10fZdSH#VCd^{c=SGb+6(r_RVK-andbRPU){aj@_ad-jMc8Fbwf3cU0rz}xjB zTFPiXU!NR(Jyd!D!;3QrPB=RxP!!D}Ajj%c1or6ka!M=LN2PU%f(NN#v6PbJ1h=2`d*HynxxI6xH$#+8JI~J)Bebqd!j!^vKH+ z$uNRX9@+2HDd!SN1Z9fHWi;dou(_5TglkmKySL-dFMm#1SZ#~){`8boBPf8k(~hSIu=f z;FpPNv&{3m?G`JO-YZZV80*xEG)Bkq9ANq#j4h5q(*Gj(z`w>`NG%$lI1HA;oa@?Y z4@6@gR*}dY7iH@{imOlyy6Al?*t<57nT8}1>V&=~T0iaHaM|2A|9DsZtIXG4y(Ts5 zvy%=qQ<)!l5?qa~!dzS}LS~uN5Bzo6_nkk=ge4yHf$qHmy?qOlAniT4(pwH9CVqwC z{4QVZ`y$h$pnoMk3?pe56)_@#AU_a*iG(2j?*jQ(`u|5Pkr0V2;@ki3s{;1X;R6@0 z+*$Z-7`)w$CqN^@%?7TS>XZ=}?3yH`YKdVKuzujEDKgjzb*|x7>^`H4ZkY>uR(Z}q z4YVb(R>BUg@CI8sq8;>p9HEcuv{Qj(F`}WM&1_BUwdgq{tQDK5i$|4Mh9URNyAqXfcr@YP8A4~jAA#4G)w?;|M>YWN?vXG);Ud?4yCC0Q3T zc+q4=ByUxogDc=2D*Qg>v3r99Gp--&(oFyGSS`29UDrVE%$5Y=*Z)&IvOe|fOQHe* zFK_{X2Z%5J5DyPKFxb%KyFxZD9pFfbOT6ZF=ctVe>qZ8Vr`915!R5lF|Xanykm9u@!H%Q&3RMgNix}xkI z#Vkv|y8|ecJ+f}IPqvW@bECe2y19QoM?H_{Z5$$_d zaCJ`Ieg3A{g7XsRxeVGt?KQwAGS+1GA z>a9b(wm@sQy4YG#qxd^`Z!57+Pk^?pO!6mNi3`!fMN9GZF%S}l$Hb!)63%fzLoiUB zF(?VfnR%+Wb(NU${k1r4#xW%4L%8M~RYPAK{bzoZqG|AajM)14@`0m7xAeJ~{?{wJ z4=o~1duGO!5g+c#l)7-&%Pts|jq=$^^|46i_nQERt3iq}Kc2B6AUl-Xs8{+SJuB(p1D$I9K3!ICSoQmuEHEVB zlI-DJnLeFW3u$d|Sqdjl$UAyMRa$}PrlCY*t)bzP3UCG6*9A{0(i#^vTHg~c|f zS?l0d-}**;b6uIRX=o`K804k{N@@KMODzL8oTn?Fq`gxk{VmJ z4$nBRo+k5<>R52K$`MXyUXe1k(gh>qMH82)yo05(17VbHMFBJ=#|(LGdv137^%fbJ z%(kE?W#*^k{4?s5<}F9GVjyZSbU$k^zeOESJFpX&^SAqN0cY26;E#R3m1L83MWv(&(@|GR%@#IdB%5yTBE7tK3L5kBxL|+5k57u7oucDA7q|!h^>qz^437TJ}-m}_r#coh$!%zc_ zTnVkv8Y~U6aGqoNS?S^hbQr{OtBEEpKlm(e$i5w`O&sNSCeW;a%cPj}8HJZ=w9dv7 z>%s1|=s0Fm3JTLWnvDs5QQGlGtR_t=OMTY!H#--bW95r2M!gtK1X}*qD(+UtuRm@e zA0Lkov!qPy72GmIro$=&QOq641RZwnD#cMcYafc*_Z3#~+VS0Zr&_7x?tXgHGJ)+N z&|c6{-y^)ucV)5g$we~l_Hv&${z<+?PdB+ngv;)-f8fl)XZBVk@cHJwcJXiTyA#3% zbEDwv&&d`b@8?D++QQj|o_KaY87W!mPi}i*+axkmtJ%31M1+b&(iD6Q# z)T-&^#auNlYm}8?)ry#=Qg-WR#J#d0kldcUalLY3kH^P+tmJ6gDZ7trFRnO>s-`pT z4=`-IzrG>3)arA4`f}^e_j@lHXZ9TqB^+G9qmwdEtDXXGqQ1TDzq>how%u`eJBM#} zI~eyGd|e)Ndpp^%bd%(#?-0&ndV5i>XBKpN#2IvcOKm1ncZQmsvO)wTidG+B^c%MF zk+j0jkVuQkP*SB+<-no{agO|!5W~Ja2;?Pu3xW`dlR&}7omb_yq|>#E6~tb{*IY3i z%iLQPW8o73{8M8_9FXqdC$T2|WVct`?XDwYozWZ1aMth>WfN8m!fLy0o=oOe2CS!w zcYR}6Ziq@olA*U)5pNfx8S}|Qxd7EHrnK==62-lcmm^!m-nD6RM|`j-r^9x zp^f;k>3PL%)GwgP?6?2P_k}PgedP6Xf)ybz_aY_jzChM7T3K$9jUhCN%^%qCvt^9T zU9U4OW%g$s;)J3hsCq@(s8P3IMvC@UP-7d_G$bUN?c<3o1U#LcJG#C7E=AXlny~wj zF`Fnf`}sHX@vTzuap*}HX3Y?-8`=~Kq`#~k6vZ%b!r#Jj6s62&JvIP4Sn+6WPw|-& zimsk1zCdkt4&T@AwDc6+q8E6=i2`Ew3?krE&liQ|<`d872N;6rA(M{-I2XP*lcwA) zTE}%YKlh&S!s1!)=nqT6PK4##>@rgKf#f}?W;OjtJGgIN#sg2#98*Kj!T2sbi)S*G=)n+FrXCv~1 zyY~094Jj_<>2ndA^>5tTLIa=?McWp+Z7lVE!+oIEXG^wH51(i`%EuSXUM3tG@>2KY z&L;AZC(Z?Q@`bA0h;oI58(~ANq08R{wdHIH)h&XUxmr?H(#lPhliac9{8r1>CL5&heC7Z!ZL)vn>&>Z#zdaOHFPwMN4q1!Tk!t5s7~qx8Tm4ILzZD3GaO>$`MQjJ#je zzEAx4{kFXpL{~;CfAW@~eM)KF(Aiu`SgQ)vq#KBD0r$0wn0VU|9AMQLtA$Bby41#H z)IIxAH5$^}q2{0zt}Vl!KfKDcV|^Q4N{7r1d?t2tJ?Cm3twi^*=^p!n8EcaUXQLTV z_^^2oT%!+7W4&tQ%j3vekd7IHg&*tD-~KS?7}Q(dueA$|E`l&pSz%VovyCriX<_wa zNNs)-4nMAPVq#l8Fa!_Pc6bfwtXmC#!rWpk%pBouWMMWE*>rXc`($!EY(8#6r2e|O zyWL|pAfR$8h3%VFF>|`EAsjrBr6ysV%vsG^R?^G*abeoS**0;PMk5Qny5JZTZOEM_ zr^dTD(j#KOl`ruAY=$tY4CL`@pwSqct^DN3 z=g?I`c-|9uErl_TS*3+`H^q@tMbD z8$nwB7WnSz*HgzZN#0Odltl@LtMV0%i~BM{5$v0X*MaI~?Y%c>?oQBohM=>GYV zmoitEn)7SLyM03T=`!8ICV+9p5NzXwe*w+Z9F_wGTm&cvzGz!!Khy0XV)>B1pT?1s z*jGcC#>GFRLywo_!T08N{ViaP-BZIXnOrAWor;*Un42neqEXvD2I+n%^rLO5skO~3 zKl7dBzSC!Qk0{vNdk0ALfDi2eoqOys%rE}Ndh(OoA$FCf6)sAsYmv9?RS|F9&~3YN zV=2pTf%9&mG<_GTrhu;oGC-L}56Zyky2i zVF!)pKg^7BW9m&MuBl8C!WT&GA*YCXqt?@CaU{qCuz_d4*lV7jnH^UWUqsF$tz*Cw z1g%-DW=`eUcL51wP0eOZ)9%r^sqgq31qIpoN7iq)M>HUreYQ&xl5p0`A>El{cimca z*pGP4=S~K9*ppuwacCPQHCHVNnYuAhZ#}U;nuY^hk zRfW0U`?c8DNq?Kc02yXmm6A{&464fp?9rI??mZTTXe|u`(&d>CWUVeZ) zJE828M+}XZYS^HM^r5e8l2F>mq9y@CWcx`s+R`>XLlW%b&`7hY$IrBq#o5L6Z_y-fRa zJt6d?>-M@O?mGjgZ}|&khx>X zKU;8UOK;W}y+%>!cF>1@pk4wBU+&~a!b#x`4WZnT>>9N zatZ6nRmYYC9R(lJh`Ua>f$?~J@*|rK-zj$`H!6!ixR2Mz3#E;z>>A-42W z_EeTTe%}-#TaWK^+sVBYmC&R_(?|{#LVryOrCkKb2C!uv-bUKGDoP~;+wiC*FnRHn z=Bv>=0qw~WdcR0WZry1kcFq4X&FYK^YIVdEJrMDb5K*$TcCpfMcX9RLv~qC=|C}eH zt@Xc39b)NXVP>E(F5=!Lwd;EY2O8!XaCH6EoVH;`CQH8d$sf-2`5g8;50(~@$t~+K zsOLQP-)+tFrBTa%-IL0Y9we5NiV}sYewTLEJW1iaHd=qE!dP4ggXW>*rrS>IVU=TQ z0Zr@5BJI>~VfKyX6SJB15~rj>CV7M{Ae%FV_*1Ntp|!qD`GN(&p& zE+-{r6&P$$YA&b17|XaaSjYwZLfCZIJMVMDn}o($=!=;lT21QxjaCA-Z9EQF`Y^4l?0(TZqdQo$CZ3@L`64ol6oyfPkW-NdwqQrY_#r=iqGK&ZO#qc zgbOiU;C~l*WqE%@QIshgU=TXiuJq%#P5rN3Rn*3O%SeP1;vq%}{_2DluCD*{L4@=D zab?1!T;{lN!w*n?P~$F;3-4**hE(J!J~^q%>w^6l9rUD=O+k(3huvPn1=2+p)LRms zf0!tKRGJ~P6LU|izDv(ioJ}rd@x_-*C&p|+iO20P>4?sO#)taR^fqq!9f42FiRqYX zQgP}Jo9;i!YlQM-P}W0j+5L6Xp@uZh6S@&a)#wMIzE1GOR`!pM(HPQZRsn>d2un|6 z&y$WKFD@~&z*!1<6h|-e{95!Vms09VCECb{n5!_U;&p9p)du@Y?DIQ6TzVD3Fjj5OVqN2Y3GSv;On^mt#B{Dt|Zd z_frM`0sedzAQWnzh?D+8nA!(n}I)b{9mEJWPVMKF_)KUX%{q4s%o;miQ8pyte`U3#=Ow3Mz! zipJ>j`>{PCc~*qH;5s;$IvDfnz4K}FM$l_SAknZ6L7?|4F%Yq~W0;?{Moru3jp!%8 zo{U)AN@za;!X;;GMF7^9ahr<0O$?;U335*xt47N2+3%>qN5=b!9Bb(x^ARKm>!t3T zWG_$&fV~{rny8KlLEjC-+;=>Je3uy#d$o|_LQd9ROa*rmjfj*R`D-_iD!n;Vna?ez zqGjOW(jb%A5u;^<5-+dDuhv!H?(pprA(0~KzU(49yvscSNM|2E6%-zm4rhl6#djw> z`2u{KD=}JdlD!;QG}^%1;c*CsD&1=H^pyEN2a~ICTxMM7JsTNIND?^iz5{voveqnn{JM!}@ zLJc)5KI;n8Oc#C%Pa|`?4zOfeJJy{KlTv#BOA1cROZGA8KI-gqf883+??V}$pLr0w zOZ!g-0^g7pFGC{OKS@G5(h@!b0|0O#0sv@`nR#W$;^F9GYwGA|`!lYUY3M2M^P>A1 zSwBc5c$f*i-=-K;{isVNir{5@ftd2SKsBD%RzM|q)PKc!-bF{Vl-aU?JLYg;$I+sV zfYg7%wfwxlz(!J}eh;IPX;~}R;X17G&Q~>eye`4QcSLsr+;}&fcz3utYZQ|etiOU> zSqI400(lplqnnj|z&TFl$AmdHv7|Ha<5bv!(G1!w(_|QRn>7uKB{FCJ7`@ z8Y*0GEbfiD@It2W9O4|;Dz#AYuKCCh`_arr2(=h<34nf~xUjo}I91m~FYLP;Vt&EY z(3;a$`|c#IGYj(-?@he%{-mmbnrzPJm!wdf%W?OcBGk!W(8%X}VmeJ^NRnJZ zy&T|Kag=Yn1Bt_2?R4kdpl1>7eNO3jSfNA`0jssx-LuJP;ENYq#=1;)oCybrIP<^(F9P z@)o7os9Jg);AUUCd>*dW&+c}7E!TT?L_IReNJTDYvUby-_5=~Bo8kp9rSOGVcbxeI z+KJTYx?F|oC--aiInV+Oo9{foW!fDo_4m0cM?u5IF6C3&)STC&#G8Doq2k|g!($P& z^Ep_Yt4Vv!CS@H7@AH=vtO{qg>-KEFbJk-}k4I#QC}kCnEELW#s1)yCs#Gr2uDk+Q zK=)34AEr=GH{q@~l3Ddq5*5OJS0ieuOGPV7f!C-Cn;^4_t;)*Qbxf-$L{zMpH?8cJ z)Xx=C+UW|W`&>tD1_~4`-%IGelg6=SD5mF72*sdQGH1M$%AymBCfkMUSA9zb6(J~z zgjau^dfwCR66f;r z!TPMkE8ekEGpn4*=~BFvf-Q(u-P|eIhvytaYWJbET{QBm+z)wmoys93F3mb(oZ7do zbEIj6_kJP7AW1mE&?k{d+TG|OZH?>I$|+3rP#VnB>Nnt?tAIMop7ooc z&E_}yD>K#GHWBCtGtut}PT+L&$P0G9tA7oTFV;I{pF?~?3xxfI00bxq^M6Okzw-aT z(Gm)h+(MrHzkQX(4?&VU^cNR0w?SJ%Dfyye#j<#0`3~ehueTIPY;I%w1Wzxt5ji8& zyJ(2yIVe}W1)G)++tr7J$5qW-2jgkCQEE9~9XvY6@}@6O(;RI^c5;go>3M?aa|NbmMWrnN#7-FM zQSis@LD$$xEZ*ye+e;H?R`-2ffO713V|v~41%a7TO?D%)BHFW$oV_+j-zOcC_nA(- z7V~l5JdY=s)OSBq=syrbndE#aYVui0VrL8;Inw)JrMAigFBSJKBbvSg=(R z+&-r+_4hNiCi+}|*T!P%TtZo-5?YXXzT8;(d6Ho1z@-i6Ctt(c^H2icxyWzpA6wkx@` z_xxO(K1H`^pi3l|Nw48TlgMtgqk(T~P)gbMl^LvJIS-I^eE5A!&{%K?Vnw;bNhtdG zrGYA;Hk=~Sc1T)5oT=D*ukfYY!paz885L?pr`rC;+$f(rG3U;QChDznl%V~aBIhN{ zF#Hi|PwUn9$8(=AT^3Jwv)bZ6@M*qZNSdReG;!K&!{7}n2za;{M=bNk*X~1o102?@ zlTw~^E15Iw6~qzfpL-LD!(QiSjH`0K`et<1R{DurcyxH!>gO=A zXEdVHLXwup`KlQT#wEmpg+rB>1T5vKcwJj=otc@8JM{^*0|{>(zF6k#qFR$=REQna z*Sn9`qIGYJb1=A8^SOehrspDGg~vFkf*V^jpPTBJ67r{BO(31{?1C_9#{I=nTo)S9 za^8@eHPjcqEE-mBo*GAD(~AL)UDn!^pG95ic#zQQhXZ6}7S6`Q;26W8ZvvzO4+Z!u zV}AVxe-p^nH6$i{I6Mr0ymESUeNYWc2-ex(0-#7U;YyJuAt^kTPixXEuT`_YH8GPB za1%Md-{+Lm&1X*h>_ZZkeR1eWh=u0oReSIXkAFR;X?8D$1UL-eO5`N}5HS||Fbq*) zxL>AF39g2~n7)_GX?&sgL{gM4kFZAFiV!6Yd8Ev0b>wUFVhRXg@Eq5fkzl@9v;C|8 zpQWy%lTlDUS7ekM8)ne#msMn_)L^D4 zfh@o7zud%u?#NrBdYpFn{s+-vgPGx7Zxg=pBAy>dUTcX4n=-Nqp@ySQqA!~nu%VE4 zrsM;lttaFImc3{r;jCW6HEzCTGp1C02p4pbN?nVLY`qtaGxcEMm^v1^-)`-@SdIl< z#Fr-LAX89n$<87lU6N1?M2%Tj9e63zY{)H0yj(MnAyAf?)x+BJbvfR6d$bON^Ddbz zR(TWZ$m`w9J+WGPOV+5ZXPI%ZetJ$AW>4x(buy5B5WUPapZd1zM6)RhCamI53F|WM zMyX?mdtGohNu$unBuv3@(2Uktm?GjI+zO5(G$z5&j6bn3Kr2iE4_1Zvk$)HG*2SgaJS{R*LCyla^9FMeQ^{`xxYT*h!My$>Fy#@33WVJ z_4b=Po?>i)0$y&Twh4c$?Rpo&lN~;>>4UdqSGzDm+#15jE8yBCFjBZexP1csWTGOP zS*R!Qxs6d-&m{q#8NiCHJCa7GT&=2u17Y3pLxZFQy;|rjiJWs6HOh?%y6EooozsmY zV+>5dn zq%|x;tO%ukYOi6lSE6P}X(B0+X|f6w3QUN^0S;l`-bFI54iIwSeN?u? z62^%I>UZ3fTH?-D%amce4d1dxGOe=hl#PW<0?^L&sgad62fhe3Y9~6sWovU95$cH8 zTAiQ|Ig>M>hsUV2%4AQcZJ|O`m3inLLv$8gvP{r*7b@iFq&A{GBY5GfkU^6&UV#~LFAq9~Bxe)oEZiSLd)^z*js4Vzvc_e)x@qc5Jpd@Phv!Fz8R12lmNkjXF&*6gXGRnW?=04KC~%^ zQ}v&5HPfAj%Q2Xb^~W8rfm+&MB#(O*8wlEPZdnO?p^1kM3;pai4TUWZ&#%kDXhYf!2yT$CVP7aJ)+}>w%V`tNsdIR3!&R}InJ$tzOkW&yC&JKbah_C zy~-^fE0$se0&2EWG5KGw-<{}kkalN(jb|r{U-0eV43xhUWDN+>L$WiEUH!(R{=yPN z$;6+QwK-WnrPNR^!3A+a%3{v0D9*NNWP6fccpGfjJbA!!m4ZmE+0(G{I=aY?xbA~` zs6*YU*odRVQiVZk`OH%&CT}dvf&n{BF8GKUixV!Yv(c|NCKJvTR<`FvT8GKd#rCbx z$4dyyGtGv1nQVd2_;x3D=9N=Qd6uU~JwIhGTPkSA0OoWT&t0WKOE<5s_o`I9VU+c# zqSUG?s$}tvQs9)OPPo&hEj?H6ilC1Q+m5iAYj>^H>@+3B@}}?6+h$}pbsdal`P3?4 z4Y~-?OeQ?7LMK1gzxFk2h*Co!DOqV{)$95?q!3}()2?VE8=@}3m^Zvmvu}PMQ9=RD zM(81Qce~(Z93e|V(1^;oWJKSn!qQ+w$am6o2&~eMO`*SO<;-QuSQ3vMiwgm3QQrSB zW*X31J*u|yizu|CCNV>(lwufP&QL?_gBRQW#uoyvu%}^IKh^~fR=2zLYiybge?i!x zE=V8YXrQCjZ@&&P5F1?5m zwtdYxJEkV9($bNLrlaYR;dzsZ@ z$Mt@BTBO0zVm*#LQi)#WM_TjIhUH&uIc++NF)q9PF8RjQREasO&`5io2tUtU?Vwrs z>|lkz0Q7j$k$kLgzN_VvT7bW z*E0xd&1GTL71i?P47f@%YP8@LOs7R++33F3Jos9Y1s6{?xv_K#ulU{{HG`?!Y@SGa zf3PhyU%$l53@RSh=-lLXZW9I`EsE8WSCQ$5rVAg@av_kJXYdM` zeW31jYs(9q!uybmsU%nMgsoy)PhTrFF1JoBaH9ikp^Z+HL1IF8+75*wDZ-PO#-NJP z%^k%7+N~g_I^9~*q*vr7F0S*Fahba2c$Te6%CcAX=?H^y_Jd|YBS61wFmCINYw3xh zaa>j`;L2CVFSvD;@j|m5i|%vkQ3_L5d~X#-3M<#32IbQP5NFQ)=10H=qpONhB9X>x zB@*msMQkL2lMU)Fkx-a{u|t+6hUOM;y&&cM-gA$d=fsR{J^eUZgalTAjzh*cgn4g$ zEvf0<0IPDtGDlh1jj(&hiqMbFaF(6fQO`>62^XCM$$GDn4FP*P5`+@Z@jn3Jh&ao# zP;s1M$7_TXb}m9MG~aVig<1b&?+LOw*H$T~(gIi^iSYO+*}?quAYG za>~OFu$agUK5SZ?`#LTwybPU-TSN7fM|s0!J$)w2x|0wi%Ft-eFa?#uS!v%}&)?s| zJFITIEwmoWXv!*ySHwXp3wM8k(P?Md<|y<%rwiVM&7suVh)wG#uHov^ZMs77L$dOc zXvoW(wW@8_p0n74*!7KpB;I&M<@SA_Y@w|-1dC<2O>YPHy(N z{*sgq=Nd^XD8_T{;wHjsKw7>V7E%(hbt@a6LV6K+NE+ACC$~D;u5taZr5L~Y0g+t@ z1&SbPG4_9`U}fS0G*@$Vv39Wh#R$7tW%qnS z*(rN8SPwqllwPqj8@J2e;LytEx4b1h3Vf`!Ud`4u;@{@r33czTUHqN%G;qn#u(0Z` zv8tCF!5nGT#i<30-&D=pxM(~mrTU37-+lN3iX?MW2pRy1pLj|p@TLqEHgaP?TTeTa zm$Yi>;vf|Th8a~%k8ZD)HJF{S>r#%UI-bB}#fEbEcCbcOogLX;#0h~UF?(9Qs1z_~ z;LsJI3N_G+&&FkClQpFSVChJ-(ycGGc;QZO+iF(W9(3%#LIF@EJUSO6A#$*jNeMv==D#vgraSJG(yxdhb%byZ?()!?93#rOspM#YNS6d zkJQDA4!7F6`mF1~-o}^gOHDTC^KqD9S34xn1gh}mWrR8z?tm+cOG}xhwkR6qGZWXO z&N|wF?8J|xhaIba8);av=plz8?zjXkY@!QgTD91^hKcx0vWVQQDr`!YazW}=lC+D# z+-@YJL>Ov&@PssPbJ3942o+1K1YgEOXO~caM`0EqGi!nhzi)HhzI%(uyQu=~07o#x zXNI}+om{1Q+P{Yxn|1dWeg9xB3{m2rYSNkNb0|Yp1VP+92BgGj?r5gs;^+ioF>`bQ z{?rrFhx=b;5i)gAaX%}I*piUSqQs`}x*!t0W}KX06J25~0(2$E4|^i6I?4skk(CW9 zds-Vj#={hELC}_K9bRHRjJ+H+2lf;4Q&ILF`Nq+4J+_OYevTwLB?fA82_}5bp--P) zYGM^~wpeKd)luV*y~`&r8y)YRPc^oigM;M?0LeW6n1DOglxMh+TE%1l6VrWyi(HYQ zChrV?w*M|1Rc2Jm{I0x|q=O(730B6|30v}V)>aG|qR+*1d0j5@NN4aUy>&-KqWpRyZEo3@j)n-M_ zsks8Z>kqJgD~5!;JdJqQ;@un_LU`{`LShEJPfxUmRY}6We@4R+iF|VsvlvVjDbkGM zzuny59l}d>h32d)$reFFg{T}ZEtcZVm}g9t*%qcRG8sKz;f{XwLNtvj|g+y8w#vTLj4o%2ucg*ymmj; zQfvyEs$}H4lSWK|+=f{8v}bj(mWI}uMt)z3DPe5gi1Mo8!W~OU%Vo*KLL+a2#ELf6)fMWcz^RPS+)6fU zG;Co|-`kZDIT0k@;upgQ3)kSxCDeYin#jqCjkH_gt&>;14UG~~qUM*u6=c(F=jN6; zG%d{cUz?%KZ;fMoo0pUBpk#ZaI2QJVc@)n(2qP#2)DcY`c2%Mymg|2qTGRs5EhDhL zSa|npJ;9-YISV}CNidIa-``boZG9&!(x=z}({({R7G~2L6wFoRA9>BGf|hRT(mLP* z@Au~XW^_gT;e=)5cm}+$=', 'Moment of Inertia' : '>=', 'Length' : '>=', 'Width' : '>=', 'Height' : '>=', 'Material': '=='} + "constraint_dict": {'Width' : '>=', 'Height' : '>='} +} +#========================# +#Generating dataset +#=================== +supply_coords = pd.DataFrame(columns = ["Location", "Latitude", "Longitude"]) + +tiller = ["Tiller", "63.3604", "10.4008"] +gjovik = ["Gjovik", "60.8941", "10.5001"] +orkanger = ["Orkanger", "63.3000", "9.8468"] +storlien = ["Storlien", "63.3160", "12.1018"] + +supply_coords.loc[len(supply_coords)] = tiller +supply_coords.loc[len(supply_coords)] = gjovik +supply_coords.loc[len(supply_coords)] = orkanger +supply_coords.loc[len(supply_coords)] = storlien + + + +materials = ["Timber", "Steel"] + +#GENERATE FILE +#============ +supply = hmpdf.create_random_data_supply_pdf_reports(supply_count = 10, length_min = 1.0, length_max = 10.0, width_min = 1.0, width_max = 10.0, height_min = 1.0, height_max = 10.0, area_min = 0.15, area_max = 0.30, materials = materials, supply_coords = supply_coords) +demand = hmpdf.create_random_data_demand_pdf_reports(demand_count = 10, length_min = 1.0, length_max = 10.0, width_min = 1.0, width_max = 10.0, height_min = 1.0, height_max = 10.0, area_min = 0.15, area_max = 0.30, materials = materials) +hm.export_dataframe_to_csv(supply, r"" + "./TestCases/Data/CSV/gh_supply.csv") +hm.export_dataframe_to_csv(demand, r"" + "./TestCases/Data/CSV/gh_demand.csv") + +#======================================== +score_function_string = hm.generate_score_function_string(constants) +supply = hm.import_dataframe_from_file(r"" + constants["Supply file location"], index_replacer = "S") +demand = hm.import_dataframe_from_file(r"" + constants["Demand file location"], index_replacer = "D") + +#hm.create_graph(supply, demand, "Length", number_of_intervals= 2, save_filename = r"C:\Users\sigur\Downloads\test.png") + +constraint_dict = constants["constraint_dict"] +#Add necessary columns to run the algorithm +supply = hmpdf.add_necessary_columns_pdf(supply, constants) +demand = hmpdf.add_necessary_columns_pdf(demand, constants) +run_string = hm.generate_run_string(constants) +result_simple = eval(run_string) + +simple_pairs = hm.extract_pairs_df(result_simple) +simple_results = hm.extract_results_df(result_simple, constants["Metric"]) + +print("Simple pairs:") +print(simple_pairs) + +print() +print("Simple results") +print(simple_results) \ No newline at end of file diff --git a/TestCases/study_case_gh2.py b/TestCases/study_case_gh2.py new file mode 100644 index 00000000..22e259f0 --- /dev/null +++ b/TestCases/study_case_gh2.py @@ -0,0 +1,114 @@ +import sys +sys.path.append('./Matching') +from matching import Matching +import pandas as pd +import numpy as np +import sys +import helper_methods_LCA as lca +import helper_methods as hm +import helper_methods_PDF as hmpdf +from matching import run_matching +# read input argument from console +#NOTE TO SVERRE: DONT KNOW IF THIS IS NEEDED? +""" +method_name = sys.argv[1] +demand_path = sys.argv[2] +supply_path = sys.argv[3] +result_path = sys.argv[4] +constraint_string = sys.argv[5] +""" +###################### + +#==========USER FILLS IN============# +#Constants +#TODO: FIND ALL DEFAULT VALUES FOR CONSTANTS, especially for price +constants = { + "WINDOW_GWP": 28.9, + "WINDOW_REUSE_GWP": 2.25, + "WINDOW_DENSITY": 491.0, + "WINDOW_PRICE": 435, + "WINDOW_REUSE_PRICE" : 100, + + "DOOR_GWP": 28.9, + "DOOR_REUSE_GWP": 2.25, + "DOOR_DENSITY": 491.0, + "DOOR_PRICE": 435, + "DOOR_REUSE_PRICE" : 100, + + "TIMBER_GWP": 28.9, # based on NEPD-3442-2053-EN + "TIMBER_REUSE_GWP": 2.25, # 0.0778*28.9 = 2.25 based on Eberhardt + "TRANSPORT_GWP": 96.0, # TODO kg/m3/t based on ???? + "TIMBER_DENSITY": 491.0, # kg, based on NEPD-3442-2053-EN + "STEEL_GWP": 800, #Random value + "STEEL_REUSE_GWP": 4, #Random value + "VALUATION_GWP": 0.6, #In kr:Per kg CO2, based on OECD + "TIMBER_PRICE": 435, #Per m^3 https://www.landkredittbank.no/blogg/2021/prisen-pa-sagtommer-okte-20-prosent/ + "TIMBER_REUSE_PRICE" : 100, #Per m^3, Random value + "STEEL_PRICE": 500, #Per m^2, Random value + "STEEL_REUSE_PRICE": 200, #Per m^2, Random value + "PRICE_TRANSPORTATION": 3.78, #Price per km per tonn. Derived from 2011 numbers on scaled t0 2022 using SSB + "STEEL_DENSITY": 7850, + ######################## + "Project name": "Sognsveien 17", + "Metric": "GWP", + #"Algorithms": ["bipartite", "greedy_plural", "bipartite_plural", "bipartite_plural_multiple"], + "Algorithms": ["greedy_plural"], + "Include transportation": False, + "Site latitude": "59.94161606", + "Site longitude": "10.72994518", + "Demand file location": r"./TestCases/Data/CSV/test_demand.xlsx", + "Supply file location": r"./TestCases/Data/CSV/test_supply.xlsx", + #"Demand file location": r"./TestCases/Data/CSV/test_demand.csv", + #"Supply file location": r"./TestCases/Data/CSV/test_supply.csv", + "constraint_dict": {'Area' : '>=', 'Moment of Inertia' : '>=', 'Length' : '>=', 'Width' : '>=', 'Height' : '>=', 'Material': '=='}, +} +#========================# +#Generating dataset +#=================== +supply_coords = pd.DataFrame(columns = ["Location", "Latitude", "Longitude"]) + +tiller = ["Tiller", "63.3604", "10.4008"] +gjovik = ["Gjovik", "60.8941", "10.5001"] +orkanger = ["Orkanger", "63.3000", "9.8468"] +storlien = ["Storlien", "63.3160", "12.1018"] + +supply_coords.loc[len(supply_coords)] = tiller +supply_coords.loc[len(supply_coords)] = gjovik +supply_coords.loc[len(supply_coords)] = orkanger +supply_coords.loc[len(supply_coords)] = storlien + + + +materials = ["Timber", "Steel", "Window", "Door", "Slab"] + +#GENERATE FILE +#============ +"""supply = hmpdf.create_random_data_supply_pdf_reports(supply_count = 10, length_min = 1.0, length_max = 10.0, width_min = 1.0, width_max = 10.0, height_min = 1.0, height_max = 10.0, area_min = 0.15, area_max = 0.30, materials = materials, supply_coords = supply_coords) +demand = hmpdf.create_random_data_demand_pdf_reports(demand_count = 10, length_min = 1.0, length_max = 10.0, width_min = 1.0, width_max = 10.0, height_min = 1.0, height_max = 10.0, area_min = 0.15, area_max = 0.30, materials = materials) +hm.export_dataframe_to_csv(supply, r"" + "./TestCases/Data/CSV/test_supply.csv") +hm.export_dataframe_to_csv(demand, r"" + "./TestCases/Data/CSV/test_demand.csv") +""" +#======================================== +score_function_string = hm.generate_score_function_string(constants) +supply = hm.import_dataframe_from_file(r"" + constants["Supply file location"], index_replacer = "S") +demand = hm.import_dataframe_from_file(r"" + constants["Demand file location"], index_replacer = "D") + + +#hm.create_graph(supply, demand, "Length", number_of_intervals= 2, save_filename = r"C:\Users\sigur\Downloads\test.png") + +constraint_dict = constants["constraint_dict"] +#Add necessary columns to run the algorithm +supply = hmpdf.add_necessary_columns_pdf(supply, constants) +demand = hmpdf.add_necessary_columns_pdf(demand, constants) +run_string = hm.generate_run_string(constants) +result_simple = eval(run_string) + +simple_pairs = hm.extract_pairs_df(result_simple) +simple_results = hm.extract_results_df(result_simple, constants["Metric"]) + +print("Simple pairs:") +print(simple_pairs) + +print() +print("Simple results") +print(simple_results) \ No newline at end of file From 1a4f35b228867c4952c1d29c81ac2901f11dea20 Mon Sep 17 00:00:00 2001 From: erikkko Date: Tue, 19 Mar 2024 17:43:07 +0100 Subject: [PATCH 2/5] testing git --- Matching/matching.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Matching/matching.py b/Matching/matching.py index 238c8d74..f4c98039 100644 --- a/Matching/matching.py +++ b/Matching/matching.py @@ -164,7 +164,7 @@ def evaluate_incidence(self): # TODO add 'Distance' 'Price' 'Material' 'Density' 'Imperfections' 'Is_column' 'Utilisation' 'Group' 'Quality' 'Max_height' ? #TODO Create standalone method for evaluating one column Rj of the incidence matrix. Need this for cutoffs in greedy algorithm as well. start = time.time() - #constraints = [] + #constraints = [] test change """ for index, row in self.supply.iterrows(): From 3852e87b87c9c4a8c8b142bce85ad3eaa7d90ec4 Mon Sep 17 00:00:00 2001 From: erikkko Date: Wed, 10 Apr 2024 15:18:03 +0200 Subject: [PATCH 3/5] "Endringer" --- .../FirstPythonComponent.AssemblyInfo.cs | 2 +- ...stPythonComponent.AssemblyInfoInputs.cache | 2 +- Matching/helper_methods_PDF.py | 6 + Matching/matching.py | 111 +++++++++++++----- TestCases/Data/CSV/test_demand.xlsx | Bin 9867 -> 10242 bytes TestCases/Data/CSV/test_demand_IFC.xlsx | Bin 0 -> 11917 bytes TestCases/Data/CSV/test_supply.xlsx | Bin 10131 -> 10171 bytes TestCases/Data/CSV/test_supply_IFC.xlsx | Bin 0 -> 10913 bytes TestCases/study_case_gh2.py | 85 ++++++++++++-- 9 files changed, 162 insertions(+), 44 deletions(-) create mode 100644 TestCases/Data/CSV/test_demand_IFC.xlsx create mode 100644 TestCases/Data/CSV/test_supply_IFC.xlsx diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs index 821ca7d6..ee9a8228 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs @@ -14,7 +14,7 @@ [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyDescriptionAttribute("Description of FirstPythonComponent")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+0930ee02e133e3c4ace332d0bc367c90aa435618")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+1a4f35b228867c4952c1d29c81ac2901f11dea20")] [assembly: System.Reflection.AssemblyProductAttribute("FirstPythonComponent")] [assembly: System.Reflection.AssemblyTitleAttribute("FirstPythonComponent")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache index 87a283df..a5a68a64 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache @@ -1 +1 @@ -7c8727131e225f14b46d5ca46375eed4e002d479db99a3f4cda1b5265d8198c6 +14e9441b55c637c1b195de3519eab51f192883d954e778e967adb055bb64f3c5 diff --git a/Matching/helper_methods_PDF.py b/Matching/helper_methods_PDF.py index 73f566a9..988f2caa 100644 --- a/Matching/helper_methods_PDF.py +++ b/Matching/helper_methods_PDF.py @@ -542,6 +542,8 @@ def add_necessary_columns_pdf(dataframe, constants): dataframe["Density"] = 0 dataframe["Site_lat"] = constants["Site latitude"] dataframe["Site_lon"] = constants["Site longitude"] + #dataframe["Constrants"] = constants["constraint_dict"] + if metric == "GWP": dataframe["Gwp_factor"] = 0 @@ -560,6 +562,9 @@ def add_necessary_columns_pdf(dataframe, constants): material = dataframe.iloc[row][dataframe.columns.get_loc("Material")].split()[0] #NOTE: Assumes that material-column has the material name as the first word, e.g. "Timber C14" or "Steel ASTM A992" dataframe.iloc[row, dataframe.columns.get_loc("Density")] = constants[f"{material.upper()}_DENSITY"] + #if (material == "Window" or material == "Door"): + #dataframe.iloc[row, dataframe.columns.get_loc("Constrants")] = constants["constraint2D_dict"] + if element_type == "S": constant_name = f"{material.upper()}_REUSE" else: @@ -573,6 +578,7 @@ def add_necessary_columns_pdf(dataframe, constants): else: price = constants[constant_name + "_PRICE"] dataframe.iloc[row, dataframe.columns.get_loc("Price")] = price + return dataframe print_header = lambda matching_name: print("\n"+"="*(len(matching_name)+8) + "\n*** " + matching_name + " ***\n" + "="*(len(matching_name)+8) + "\n") \ No newline at end of file diff --git a/Matching/matching.py b/Matching/matching.py index f4c98039..10d5e59d 100644 --- a/Matching/matching.py +++ b/Matching/matching.py @@ -33,7 +33,7 @@ class Matching(): """Class describing the matching problem, with its constituent parts.""" - def __init__(self, demand, supply, score_function_string, add_new=False, multi=False, constraints={}, solution_limit=60): + def __init__(self, demand, supply, score_function_string, add_new=False, multi=False, constraints={}, constraints2D={}, constraints3D={}, solution_limit=60): """_summary_ :param demand: _description_ @@ -48,6 +48,10 @@ def __init__(self, demand, supply, score_function_string, add_new=False, multi=F :type multi: bool, optional :param constraints: _description_, defaults to {} :type constraints: dict, optional + :param constraints2D: _description_, defaults to {} + :type constraints2D: dict, optional + :param constraints3D: _description_, defaults to {} + :type constraints3D: dict, optional :param solution_limit: _description_, defaults to 60 :type solution_limit: int, optional """ @@ -80,6 +84,8 @@ def __init__(self, demand, supply, score_function_string, add_new=False, multi=F self.pairs = pd.DataFrame(None, index=self.demand.index.values.tolist(), columns=['Supply_id']) #saves latest array of pairs self.incidence = pd.DataFrame(np.nan, index=self.demand.index.values.tolist(), columns=self.supply.index.values.tolist()) self.constraints = constraints + self.constraints2D = constraints2D + self.constraints3D = constraints3D self.solution_time = None self.solution_limit = solution_limit #Create incidence and weight for the method @@ -87,6 +93,7 @@ def __init__(self, demand, supply, score_function_string, add_new=False, multi=F self.supply['Score'] = self.supply.eval(score_function_string)[0] self.incidence = self.evaluate_incidence() self.weights, self.weights_transport = self.evaluate_weights() + #self.match_greedy(plural_assign=True) logging.info("Matching object created with %s demand, and %s supply elements", len(demand), len(supply)) def __copy__(self): @@ -157,7 +164,7 @@ def evaluate_transportation(self): else: self.supply["Distance"] = np.NaN self.demand["Distance"] = np.NaN - + def evaluate_incidence(self): """Returns incidence matrix with true values where the element fit constraint criteria""" # TODO optimize the evaluation. @@ -166,38 +173,78 @@ def evaluate_incidence(self): start = time.time() #constraints = [] test change - """ - for index, row in self.supply.iterrows(): - if (row[5] == "Window" or row[5] == "Door"): - self.constraints = {'Width' : '==', 'Height' : '==', 'Material' : '=='} - #elif (row[5] == "Slab"): - # self.constraints = {'Length' : '>=', 'Width' : '==', 'Height' : '==', 'Material' : '=='} - """ - bool_array = np.full((self.demand.shape[0], self.supply.shape[0]), True) # initiate empty array - for param, compare in self.constraints.items(): - cond_list = [] - for var in self.supply[param]: - demand_array = self.demand[param].to_list() - if isinstance(demand_array[0], str): #Assumes that target is to compare two text strings, "Timber" == "Timber" - bool_col = np.array(eval(f"['{var}' {compare} x for x in demand_array]")) - else: - bool_col = ne.evaluate(f'{var} {compare} demand_array') # numpy array of boolean NOTE: Does not work when evaluating material given as a "String" - cond_list.append(bool_col) - cond_array = np.column_stack(cond_list) #create new 2D-array of conditionals - bool_array = ne.evaluate("cond_array & bool_array") # - #bool_array = np.logical_and(bool_array, cond_array) - # for simplicity I restrict the incidence of new elements to only be True for the "new" equivalent - inds = self.supply.index[self.supply.index.map(lambda s: 'N' in s)] # Get the indices for new elements - if len(inds) > 0: - diag_mat = np.full((len(inds), len(inds)), False) - np.fill_diagonal(diag_mat, True) # create a diagonal with True on diag, False else. - bool_array = np.hstack((bool_array[:, :-len(inds)], diag_mat)) - - end = time.time() - logging.info("Create incidence matrix from constraints: %s sec", round(end - start,3)) + constraint_dict = self.constraints.items() + iindex = 0 + jindex = 0 + nrSupply = self.incidence.shape[1] + nrDemand = self.incidence.shape[0] + for i in range(len(self.supply)): + if iindex < nrSupply: + for j in range(len(self.demand)): + print(self.supply.iloc[i, 1], self.demand.iloc[j, 1]) + print(i,j) + #Check if element type is right + if (self.supply.iloc[i, 1] != self.demand.iloc[j, 1]): + bool_array[i][j] = False + print(bool_array) + #Check if material type is right + if (self.supply.iloc[i, 2] != self.demand.iloc[j, 2]): + bool_array[i][j] = False + print(bool_array) + #Check if the constraints are right for the type of element + else: + + #If the elements are linear + if (self.supply.iloc[i, 1] == "IfcBeam" or self.supply.iloc[i, 1] == "IfcColumn"): + for param, compare in self.constraints.items(): + supply_array = self.supply[param].to_list() + demand_array = self.demand[param].to_list() + if eval(f"supply_array[i] {compare} demand_array[j]"): + print(param) + print(f"supply_array[i] {compare} demand_array[j]") + bool_array[i][j] = True + print(bool_array) + else: + bool_array[i][j] = False + print(bool_array) + break + #If the elements are 2D + if (self.supply.iloc[i, 1] == "IfcWindow" or self.supply.iloc[i, 1] == "IfCDoor"): + for param, compare in self.constraints2D.items(): + supply_array = self.supply[param].to_list() + demand_array = self.demand[param].to_list() + if eval(f"supply_array[i] {compare} demand_array[j]"): + print(param) + print(f"supply_array[i] {compare} demand_array[j]") + bool_array[i][j] = True + print(bool_array) + else: + bool_array[i][j] = False + print(bool_array) + break + #If the elements are 3D + if (self.supply.iloc[i, 1] == "IfcSlab"): + for param, compare in self.constraints3D.items(): + supply_array = self.supply[param].to_list() + demand_array = self.demand[param].to_list() + + if eval(f"supply_array[i] {compare} demand_array[j]"): + print(param) + print(f"supply_array[i] {compare} demand_array[j]") + bool_array[i][j] = True + print(bool_array) + else: + bool_array[i][j] = False + print(bool_array) + break + + iindex += 1 + print(bool_array) return pd.DataFrame(bool_array, columns= self.incidence.columns, index= self.incidence.index) + + def evaluate_column(self, supply_val, parameter, compare, current_bool): """Evaluates a column in the incidence matrix according to the constraints Returns a np array that can substitute the input column.""" @@ -222,7 +269,7 @@ def evaluate_weights(self): weights_transport[el_locs0[0], el_locs0[1]] = eval_score_transport end = time.time() logging.info("Weight evaluation of incidence matrix: %s sec", round(end - start, 3)) - return pd.DataFrame(weights, index = self.incidence.index, columns = self.incidence.columns), pd.DataFrame(weights_transport, index = self.incidence.index, columns = self.incidence.columns) + return pd.DataFrame(weights, index = self.incidence.index, columns = self.incidence.columns) ,pd.DataFrame(weights_transport, index = self.incidence.index, columns = self.incidence.columns) def add_pair(self, demand_id, supply_id): """Execute matrix matching""" diff --git a/TestCases/Data/CSV/test_demand.xlsx b/TestCases/Data/CSV/test_demand.xlsx index 7458cdad09daa2e68cb45e8a50459fbfe84bdc53..7216158f2cf382eedf9c29f126b970a952d9d565 100644 GIT binary patch delta 4058 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 a+}wU+089%P?>8^e-2~nlVT3;xunOw2} delta 3708 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 SD42m3KnuWLa+)E3N&g46P`fe! diff --git a/TestCases/Data/CSV/test_demand_IFC.xlsx b/TestCases/Data/CSV/test_demand_IFC.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..78eaf054ab677a5a3434010828a62cd374e7f836 GIT binary patch literal 11917 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 R0DuDi6@Ym(PW$Wbe*o`Iw~hb+ literal 0 HcmV?d00001 diff --git a/TestCases/Data/CSV/test_supply.xlsx b/TestCases/Data/CSV/test_supply.xlsx index ee6f7b9ee73c7f4f1daed4daca099c68fb1c6dc3..3c1730a8e895511d1355b5f924426688bc081032 100644 GIT binary patch delta 3044 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 delta 2955 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 BB_IF* literal 0 HcmV?d00001 diff --git a/TestCases/study_case_gh2.py b/TestCases/study_case_gh2.py index 22e259f0..ad6cfd52 100644 --- a/TestCases/study_case_gh2.py +++ b/TestCases/study_case_gh2.py @@ -23,6 +23,42 @@ #Constants #TODO: FIND ALL DEFAULT VALUES FOR CONSTANTS, especially for price constants = { + "CONCRETE_GWP": 28.9, + "CONCRETE_REUSE_GWP": 2.25, + "CONCRETE_DENSITY": 491.0, + "CONCRETE_PRICE": 435, + "CONCRETE_REUSE_PRICE" : 100, + + "CONCRETE - B35_GWP": 28.9, + "CONCRETE - B35_REUSE_GWP": 2.25, + "CONCRETE - B35_DENSITY": 491.0, + "CONCRETE - B35_PRICE": 435, + "CONCRETE - B35_REUSE_PRICE" : 100, + + "STEEL - S355_GWP": 28.9, + "STEEL - S355_REUSE_GWP": 2.25, + "STEEL - S355_DENSITY": 491.0, + "STEEL - S355_PRICE": 435, + "STEEL - S355_REUSE_PRICE" : 100, + + "STEEL - S235_GWP": 28.9, + "STEEL - S235_REUSE_GWP": 2.25, + "STEEL - S235_DENSITY": 491.0, + "STEEL - S235_PRICE": 435, + "STEEL - S235_REUSE_PRICE" : 100, + + "SLAB_GWP": 28.9, + "SLAB_REUSE_GWP": 2.25, + "SLAB_DENSITY": 491.0, + "SLAB_PRICE": 435, + "SLAB_REUSE_PRICE" : 100, + + "BEAM_GWP": 28.9, + "BEAM_REUSE_GWP": 2.25, + "BEAM_DENSITY": 491.0, + "BEAM_PRICE": 435, + "BEAM_REUSE_PRICE" : 100, + "WINDOW_GWP": 28.9, "WINDOW_REUSE_GWP": 2.25, "WINDOW_DENSITY": 491.0, @@ -39,6 +75,7 @@ "TIMBER_REUSE_GWP": 2.25, # 0.0778*28.9 = 2.25 based on Eberhardt "TRANSPORT_GWP": 96.0, # TODO kg/m3/t based on ???? "TIMBER_DENSITY": 491.0, # kg, based on NEPD-3442-2053-EN + "STEEL_GWP": 800, #Random value "STEEL_REUSE_GWP": 4, #Random value "VALUATION_GWP": 0.6, #In kr:Per kg CO2, based on OECD @@ -48,6 +85,8 @@ "STEEL_REUSE_PRICE": 200, #Per m^2, Random value "PRICE_TRANSPORTATION": 3.78, #Price per km per tonn. Derived from 2011 numbers on scaled t0 2022 using SSB "STEEL_DENSITY": 7850, + + ######################## "Project name": "Sognsveien 17", "Metric": "GWP", @@ -56,11 +95,30 @@ "Include transportation": False, "Site latitude": "59.94161606", "Site longitude": "10.72994518", - "Demand file location": r"./TestCases/Data/CSV/test_demand.xlsx", - "Supply file location": r"./TestCases/Data/CSV/test_supply.xlsx", - #"Demand file location": r"./TestCases/Data/CSV/test_demand.csv", - #"Supply file location": r"./TestCases/Data/CSV/test_supply.csv", - "constraint_dict": {'Area' : '>=', 'Moment of Inertia' : '>=', 'Length' : '>=', 'Width' : '>=', 'Height' : '>=', 'Material': '=='}, + "Demand file location": r"./TestCases/Data/CSV/test_demand_IFC.xlsx", + "Supply file location": r"./TestCases/Data/CSV/test_supply_IFC.xlsx", + #"Demand file location": r"./TestCases/Data/CSV/test_demand_IFC.csv", + #"Supply file location": r"./TestCases/Data/CSV/test_supply_IFC.csv", + + "tol_1D_area" : "0.9", + "tol_1D_moment_of_inertia" : "0.9", + "tol_1D_length" : "0.9", + "tol_1D_width" : "0.9", + "tol_1D_height" : "0.9", + "tol_1D_quality" : "0.9", + + "tol_2D_width" : "0.9", + "tol_2D_height" : "0.9", + "tol_2D_quality" : "0.9", + + "tol_3D_length" : "0.9", + "tol_3D_width" : "0.9", + "tol_3D_height" : "0.9", + "tol_3D_quality" : "0.9", + + "constraint_dict": {'Area' : '>=', 'Moment of Inertia' : '>=', 'Length' : '>=', 'Width' : '>=', 'Height' : '>=', 'Material': '==', 'Quality' : '>='}, + "constraint2D_dict" : {'Width' : '==', 'Height' : '==', 'Material' : '==', 'Quality' : '>='}, + "constraint3D_dict" : {'Length' : '>=','Width' : '==', 'Height' : '==', 'Material' : '==', 'Quality' : '>='} } #========================# #Generating dataset @@ -79,7 +137,8 @@ -materials = ["Timber", "Steel", "Window", "Door", "Slab"] +materials = ["Timber", "Steel", "Window", "Door", "Slab", "Concrete - B35", "Steel - S355", "Steel - S235"] +name = ["IfcBeam", "IfcColumn", "IfcSlab"] #GENERATE FILE #============ @@ -97,14 +156,20 @@ #hm.create_graph(supply, demand, "Length", number_of_intervals= 2, save_filename = r"C:\Users\sigur\Downloads\test.png") constraint_dict = constants["constraint_dict"] +constraint2D_dict = constants["constraint2D_dict"] +constraint3D_dict = constants["constraint3D_dict"] #Add necessary columns to run the algorithm supply = hmpdf.add_necessary_columns_pdf(supply, constants) demand = hmpdf.add_necessary_columns_pdf(demand, constants) -run_string = hm.generate_run_string(constants) -result_simple = eval(run_string) -simple_pairs = hm.extract_pairs_df(result_simple) -simple_results = hm.extract_results_df(result_simple, constants["Metric"]) +m= Matching(demand, supply, score_function_string, constraints = constraint_dict, constraints2D = constraint2D_dict, constraints3D = constraint3D_dict, solution_limit=60) + +m.match_greedy(plural_assign=True) +print(m.weights) +simple_pairs = m.pairs +m.calculate_result() +simple_results = m.result + print("Simple pairs:") print(simple_pairs) From ee82959b717ba2d1f8eb8d224c92e0a34d994b9c Mon Sep 17 00:00:00 2001 From: erikkko Date: Tue, 16 Apr 2024 18:01:59 +0200 Subject: [PATCH 4/5] "hei" --- .../FirstPythonComponent.AssemblyInfo.cs | 2 +- ...stPythonComponent.AssemblyInfoInputs.cache | 2 +- Matching/helper_methods.py | 19 ++ Matching/helper_methods_LCA.py | 95 ++++++++++ Matching/helper_methods_PDF.py | 21 ++- Matching/matching.py | 54 +++--- README.md | 64 ------- TestCases/Data/CSV/pairs.csv | 11 ++ TestCases/Data/CSV/pairs1.xlsx | Bin 0 -> 5052 bytes TestCases/Data/CSV/test_demand_IFC.xlsx | Bin 11917 -> 12481 bytes TestCases/Data/CSV/test_demand_IFS_result.csv | 11 ++ .../Data/CSV/test_demand_IFS_result1.xlsx | Bin 0 -> 6636 bytes TestCases/Data/CSV/test_supply_IFC.xlsx | Bin 10913 -> 12527 bytes TestCases/Data/CSV/test_supply_IFC_result.csv | 11 ++ .../Data/CSV/test_supply_IFC_result1.xlsx | Bin 0 -> 6649 bytes TestCases/study_case_gh2.py | 162 +++++++++++------- 16 files changed, 290 insertions(+), 162 deletions(-) delete mode 100644 README.md create mode 100644 TestCases/Data/CSV/pairs.csv create mode 100644 TestCases/Data/CSV/pairs1.xlsx create mode 100644 TestCases/Data/CSV/test_demand_IFS_result.csv create mode 100644 TestCases/Data/CSV/test_demand_IFS_result1.xlsx create mode 100644 TestCases/Data/CSV/test_supply_IFC_result.csv create mode 100644 TestCases/Data/CSV/test_supply_IFC_result1.xlsx diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs index ee9a8228..f410d6b6 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs @@ -14,7 +14,7 @@ [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyDescriptionAttribute("Description of FirstPythonComponent")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+1a4f35b228867c4952c1d29c81ac2901f11dea20")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+3852e87b87c9c4a8c8b142bce85ad3eaa7d90ec4")] [assembly: System.Reflection.AssemblyProductAttribute("FirstPythonComponent")] [assembly: System.Reflection.AssemblyTitleAttribute("FirstPythonComponent")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache index a5a68a64..63168e28 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache @@ -1 +1 @@ -14e9441b55c637c1b195de3519eab51f192883d954e778e967adb055bb64f3c5 +7bb123c14a65a0837a86b702b33839f43e48e6f6afefd3115090346a497964db diff --git a/Matching/helper_methods.py b/Matching/helper_methods.py index 7e0675d1..eaf62997 100644 --- a/Matching/helper_methods.py +++ b/Matching/helper_methods.py @@ -455,6 +455,25 @@ def generate_score_function_string(constants): score_function_string = f"@lca.calculate_price(length=Length, area =Area, include_transportation = {transportation}, distance = Distance, price = Price, density = Density, price_transport= {constants['PRICE_TRANSPORTATION']})" return score_function_string +def generate_score_function_string_2d(constants): + """Generating the score function string for the matching + + Args: + constants (dictionary): constants to use in the matching tool + + Returns: + string: the score function string for evaluation of the weight matrix + """ + metric = constants["Metric"] + transportation = constants["Include transportation"] + if metric == "GWP": + score_function_string = f"@lca.calculate_lca_2d(height = Height, width = Width, include_transportation={transportation}, distance = Distance, gwp_factor=Gwp_factor, transport_gwp = {constants['TRANSPORT_GWP']}, density = Density)" + elif metric == "Combined": + score_function_string = f"@lca.calculate_score_2d(height = Height, width = Width, include_transportation = {transportation}, distance = Distance, gwp_factor = Gwp_factor, transport_gwp = {constants['TRANSPORT_GWP']}, price = Price, priceGWP = {constants['VALUATION_GWP']}, density = Density, price_transport = {constants['PRICE_TRANSPORTATION']})" + elif metric == "Price": + score_function_string = f"@lca.calculate_price_2d(height = Height, width = Width, include_transportation = {transportation}, distance = Distance, price = Price, density = Density, price_transport= {constants['PRICE_TRANSPORTATION']})" + return score_function_string + def fill_closest_manufacturer(dataframe, constants): """Fill the dataframe with the colsets manufacturer depending on the material diff --git a/Matching/helper_methods_LCA.py b/Matching/helper_methods_LCA.py index 2c157a66..2aea7eea 100644 --- a/Matching/helper_methods_LCA.py +++ b/Matching/helper_methods_LCA.py @@ -100,6 +100,101 @@ def calculate_price(length, area, include_transportation, distance, price, densi return score, transportation_score + +def calculate_lca_2d(height, width, gwp_factor, include_transportation=False, distance=100, transport_gwp=100, density=100): + """ Calculates the GWP of the elements + + Args: + length (float): length of element + area (float): area of element + include_transportation (boolean): if transportation should be included + distance (float): driving distance to the construction site + gwp_factor (float): GWP factor for the element + transport_gwp (float): GWP factor for transportation + density (float): density of the element + + Returns: + lca (float): the GWP of the element + transportation_LCA (float): the GWP of transporting the element + """ + area = height * width + lca = area * gwp_factor + transportation_LCA = lca.copy() + transportation_LCA[:] = 0 + if include_transportation: + transportation_LCA = calculate_transportation_LCA(area, density, distance, transport_gwp) + lca += transportation_LCA + return lca, transportation_LCA + + +def calculate_score_2d(height, width, include_transportation, distance, gwp_factor, transport_gwp, price, priceGWP, density, price_transport): + """ Method for evaluatating the scores corresponding to the "Combined" metric (both price and GWP) + + Args: + length (float): length of element + area (float): area of element + include_transportation (boolean): if transportation should be included + distance (float): driving distance to the construction site + gwp_factor (float): GWP factor for the element + transport_gwp (float): GWP factor for transportation + price (float): price of the element + priceGWP (float): price factor for GWP + density (float): density of the element + price_transport (float): price factor for transportation + + Returns: + score (float): the score of the element concidering both GWP and Price (combined) + transportation_score (float): the score of transporting the element + """ + area = height * width + score = area * gwp_factor + transportation_score = score.copy() + transportation_score[:] = 0 + + if not include_transportation: + score=score*priceGWP + + if include_transportation: + transportation_LCA = calculate_transportation_LCA(area, density, distance, transport_gwp) + transportation_cost= calcultate_price_transport(area,density,distance, price_transport) + logging.debug(f"Transportation LCA:", transportation_LCA) + score += transportation_LCA + score=score*priceGWP + score+=transportation_cost + transportation_score += transportation_LCA*priceGWP + transportation_cost + + price_element=area*price + score+=price_element + + return score, transportation_score + +def calculate_price_2d(heigth, width, include_transportation, distance, price, density, price_transport): + """ Method for evaluatating the price of an element + + Args: + length (float): length of element + area (float): area of element + include_transportation (boolean): if transportation should be included + distance (float): driving distance to the construction site + price (float): price of the element + density (float): density of the element + price_transport (float): price factor for transportation + + Returns: + score (float): the price of the element + transportation_score (float): the price of transporting the element + """ + area = heigth * width + score = area * price #In kr + transportation_score = score.copy() + transportation_score[:] = 0 + + if include_transportation: + transportation_score = calcultate_price_transport(area,density,distance, price_transport) + score += transportation_score + + return score, transportation_score + def calculate_driving_distance(A_lat, A_lon, B_lat, B_lon): """Calculates the driving distance between two coordinates and returns the result in meters - Coordinates as a String diff --git a/Matching/helper_methods_PDF.py b/Matching/helper_methods_PDF.py index 988f2caa..dd5c2648 100644 --- a/Matching/helper_methods_PDF.py +++ b/Matching/helper_methods_PDF.py @@ -542,9 +542,11 @@ def add_necessary_columns_pdf(dataframe, constants): dataframe["Density"] = 0 dataframe["Site_lat"] = constants["Site latitude"] dataframe["Site_lon"] = constants["Site longitude"] - #dataframe["Constrants"] = constants["constraint_dict"] + dataframe["Gwp_factor"] = 0 + dataframe["Price"] = 0 + """ if metric == "GWP": dataframe["Gwp_factor"] = 0 elif metric == "Combined": @@ -552,6 +554,8 @@ def add_necessary_columns_pdf(dataframe, constants): dataframe["Price"] = 0 elif metric == "Price": dataframe["Price"] = 0 + """ + #If dataframe is demand, fill in the location and corresponding coordinates and to the closet manufacturer. if element_type=="D" and constants["Include transportation"]: @@ -562,14 +566,21 @@ def add_necessary_columns_pdf(dataframe, constants): material = dataframe.iloc[row][dataframe.columns.get_loc("Material")].split()[0] #NOTE: Assumes that material-column has the material name as the first word, e.g. "Timber C14" or "Steel ASTM A992" dataframe.iloc[row, dataframe.columns.get_loc("Density")] = constants[f"{material.upper()}_DENSITY"] - #if (material == "Window" or material == "Door"): - #dataframe.iloc[row, dataframe.columns.get_loc("Constrants")] = constants["constraint2D_dict"] - if element_type == "S": constant_name = f"{material.upper()}_REUSE" else: constant_name = f"{material.upper()}" + + dataframe.iloc[row, dataframe.columns.get_loc("Gwp_factor")] = constants[constant_name + "_GWP"] + if material.upper() == "STEEL": + price = constants[constant_name + "_PRICE"] * constants[f"{material.upper()}_DENSITY"] + else: + price = constants[constant_name + "_PRICE"] + dataframe.iloc[row, dataframe.columns.get_loc("Price")] = price + + """ + if metric == "GWP" or metric == "Combined": dataframe.iloc[row, dataframe.columns.get_loc("Gwp_factor")] = constants[constant_name + "_GWP"] if metric == "Price" or metric == "Combined": @@ -578,7 +589,7 @@ def add_necessary_columns_pdf(dataframe, constants): else: price = constants[constant_name + "_PRICE"] dataframe.iloc[row, dataframe.columns.get_loc("Price")] = price - + """ return dataframe print_header = lambda matching_name: print("\n"+"="*(len(matching_name)+8) + "\n*** " + matching_name + " ***\n" + "="*(len(matching_name)+8) + "\n") \ No newline at end of file diff --git a/Matching/matching.py b/Matching/matching.py index 10d5e59d..86ae52af 100644 --- a/Matching/matching.py +++ b/Matching/matching.py @@ -33,7 +33,7 @@ class Matching(): """Class describing the matching problem, with its constituent parts.""" - def __init__(self, demand, supply, score_function_string, add_new=False, multi=False, constraints={}, constraints2D={}, constraints3D={}, solution_limit=60): + def __init__(self, demand, supply, score_function_string, score_function_string_2d, constants = None, add_new=False, multi=False, constraints={}, constraints2D={}, constraints3D={}, solution_limit=60): """_summary_ :param demand: _description_ @@ -54,18 +54,32 @@ def __init__(self, demand, supply, score_function_string, add_new=False, multi=F :type constraints3D: dict, optional :param solution_limit: _description_, defaults to 60 :type solution_limit: int, optional + :param constants: _description_, defaults to 60 + :type constants: int, optional + :param score_function_string_2d: _description_, defaults to 60 + :type score_function_string_2d: int, optional """ self.demand = demand.infer_objects() self.supply = supply.infer_objects() self.score_function_string = score_function_string.replace(" ", "") + self.score_function_string_2d = score_function_string_2d.replace(" ", "") + + #self.price_function_string = price_function_string.replace(" ", "") self.evaluate_transportation() - + pd.set_option('display.max_columns', 10) #Calculate the score and transportation score for the demand and supply elements - self.demand['Score'], self.demand["Transportation"] = self.demand.eval(self.score_function_string) - self.supply['Score'], self.supply["Transportation"] = self.supply.eval(self.score_function_string) + if tuple(self.demand['Element'].tolist()) in constants["element_linear"] or tuple(self.demand['Element'].tolist()) in constants["element_3d"]: + self.demand['Score'], self.demand['Transportation'] = self.demand.eval(self.score_function_string) + else: + self.demand['Score'], self.demand['Transportation'] = self.demand.eval(self.score_function_string_2d) + + if tuple(self.supply['Element'].tolist()) in constants["element_linear"] or tuple(self.supply['Element'].tolist()) in constants["element_3d"]: + self.supply['Score'], self.supply['Transportation'] = self.supply.eval(self.score_function_string) + else: + self.supply['Score'], self.supply['Transportation'] = self.supply.eval(self.score_function_string_2d) if add_new: # just copy designed to supply set, so that they act as new products demand_copy = self.demand.copy(deep = True) @@ -93,6 +107,7 @@ def __init__(self, demand, supply, score_function_string, add_new=False, multi=F self.supply['Score'] = self.supply.eval(score_function_string)[0] self.incidence = self.evaluate_incidence() self.weights, self.weights_transport = self.evaluate_weights() + self.constants = constants #self.match_greedy(plural_assign=True) logging.info("Matching object created with %s demand, and %s supply elements", len(demand), len(supply)) @@ -182,65 +197,47 @@ def evaluate_incidence(self): for i in range(len(self.supply)): if iindex < nrSupply: for j in range(len(self.demand)): - print(self.supply.iloc[i, 1], self.demand.iloc[j, 1]) - print(i,j) #Check if element type is right if (self.supply.iloc[i, 1] != self.demand.iloc[j, 1]): bool_array[i][j] = False - print(bool_array) #Check if material type is right - if (self.supply.iloc[i, 2] != self.demand.iloc[j, 2]): + elif (self.supply.iloc[i, 2] != self.demand.iloc[j, 2]): bool_array[i][j] = False - print(bool_array) #Check if the constraints are right for the type of element else: - #If the elements are linear if (self.supply.iloc[i, 1] == "IfcBeam" or self.supply.iloc[i, 1] == "IfcColumn"): for param, compare in self.constraints.items(): supply_array = self.supply[param].to_list() demand_array = self.demand[param].to_list() if eval(f"supply_array[i] {compare} demand_array[j]"): - print(param) - print(f"supply_array[i] {compare} demand_array[j]") bool_array[i][j] = True - print(bool_array) else: bool_array[i][j] = False - print(bool_array) break #If the elements are 2D - if (self.supply.iloc[i, 1] == "IfcWindow" or self.supply.iloc[i, 1] == "IfCDoor"): + elif (self.supply.iloc[i, 1] == "IfcWindow" or self.supply.iloc[i, 1] == "IfcDoor"): for param, compare in self.constraints2D.items(): supply_array = self.supply[param].to_list() demand_array = self.demand[param].to_list() if eval(f"supply_array[i] {compare} demand_array[j]"): - print(param) - print(f"supply_array[i] {compare} demand_array[j]") bool_array[i][j] = True - print(bool_array) else: bool_array[i][j] = False - print(bool_array) break #If the elements are 3D - if (self.supply.iloc[i, 1] == "IfcSlab"): + elif (self.supply.iloc[i, 1] == "IfcSlab"): for param, compare in self.constraints3D.items(): supply_array = self.supply[param].to_list() demand_array = self.demand[param].to_list() if eval(f"supply_array[i] {compare} demand_array[j]"): - print(param) - print(f"supply_array[i] {compare} demand_array[j]") bool_array[i][j] = True - print(bool_array) else: bool_array[i][j] = False - print(bool_array) break iindex += 1 - print(bool_array) return pd.DataFrame(bool_array, columns= self.incidence.columns, index= self.incidence.index) @@ -271,6 +268,7 @@ def evaluate_weights(self): logging.info("Weight evaluation of incidence matrix: %s sec", round(end - start, 3)) return pd.DataFrame(weights, index = self.incidence.index, columns = self.incidence.columns) ,pd.DataFrame(weights_transport, index = self.incidence.index, columns = self.incidence.columns) + def add_pair(self, demand_id, supply_id): """Execute matrix matching""" # add to match_map: @@ -836,7 +834,7 @@ def run_matching(demand, supply, score_function_string, constraints = None, add_ matches.append({'Name': 'MBM Plural Multiple','Match object': copy(matching), 'Time': matching.solution_time, 'PercentNew': matching.pairs.isna().sum()}) return matches - +""" if __name__ == "__main__": DEMAND_JSON = sys.argv[1] SUPPLY_JSON = sys.argv[2] @@ -848,8 +846,10 @@ def run_matching(demand, supply, score_function_string, constraints = None, add_ result = run_matching(demand, supply, score_function_string=score_function_string, constraints = constraint_dict, add_new = True, sci_milp=False, milp=False, greedy_single=True, greedy_plural = False, bipartite=False, genetic=True) simple_pairs = hm.extract_pairs_df(result) simple_results = hm.extract_results_df(result) + print("Simple pairs:") print(simple_pairs) print() print("Simple results") - print(simple_results) \ No newline at end of file + print(simple_results) + """ \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 8ba36d60..00000000 --- a/README.md +++ /dev/null @@ -1,64 +0,0 @@ -[![DOI](https://zenodo.org/badge/574263139.svg)](https://zenodo.org/badge/latestdoi/574263139) -# structuralCircle -Sustainable design from used structural elements. A project about building design from used elements in Grasshopper and Rhino. - -The repository contains data, tests and solutions related to the research project at Norwegian University of Science and Technology (NTNU). - -The **structuralCircle** project is about aiding the design process with reclaimed building components. In particular, the algorithm is matching available products to the design intent, aiming at environmental impact minimization. - -The solution is written in Python and for the ease of use wrapped into a Grasshopper nodes available for Rhino users. - -The implementation includes greedy algorithms, bipartite graphs, and mixed integer linear programming. - -Test data contains simulated sets of building elements. The aim of test cases is to compare score - reduction of embodied emissions, and speed of the calculation. - -The algorithms are also explained in this Colab notebook: -https://colab.research.google.com/drive/1BRBxFhya6xCnV-flAPq-Ro8zkxuSnnhC?usp=sharing - -# How to run -First, run the console and install the required packages from the list using: - -``` -pip install -r requirements.txt -``` - -Then, import the relevant packages and define the input data: - -``` -# import relevant packages -import pandas as pd -import sys -sys.path.append('./Matching') -import helper_methods as hm -from matching import run_matching -import LCA as lca - -# Create two datasets with two elements in each - demand D and supply S: -demand = pd.DataFrame(columns = ['Length', 'Area', 'Inertia_moment', 'Height', 'Gwp_factor']) -demand.loc['D1'] = {'Length': 4.00, 'Area': 0.06, 'Inertia_moment':0.00030, 'Height': 0.30, 'Gwp_factor':lca.TIMBER_GWP} -demand.loc['D2'] = {'Length': 5.00, 'Area': 0.04, 'Inertia_moment':0.00010, 'Height': 0.20, 'Gwp_factor':lca.TIMBER_GWP} -supply = pd.DataFrame(columns = ['Length', 'Area', 'Inertia_moment', 'Height', 'Gwp_factor']) -supply.loc['S1'] = {'Length': 5.50, 'Area': 0.045, 'Inertia_moment':0.00010, 'Height': 0.20, 'Gwp_factor':lca.TIMBER_REUSE_GWP} -supply.loc['S2'] = {'Length': 4.50, 'Area': 0.065, 'Inertia_moment':0.00035, 'Height': 0.35, 'Gwp_factor':lca.TIMBER_REUSE_GWP} - -# create constraint dictionary -constraint_dict = {'Area' : '>=', 'Inertia_moment' : '>=', 'Length' : '>='} - -# create optimization formula -score_function_string = "@lca.calculate_lca(length=Length, area=Area, gwp_factor=Gwp_factor, include_transportation=False)" -``` - -Finally, run the matching with desired methods and display the resultant pairs of elements: -``` -# run the matching -result_simple = run_matching(demand, supply, score_function_string=score_function_string, constraints = constraint_dict, add_new = True, sci_milp=False, milp=False, greedy_single=True, bipartite=True) - -# display results - matching table -print(hm.extract_pairs_df(result_simple)) -# display results - the score -print(hm.extract_results_df(result_simple)) -``` - -# Read more - -You can read our journal paper called 'Matching algorithms to assist in designing with reclaimed building elements' here: https://iopscience.iop.org/article/10.1088/2634-4505/acf341 diff --git a/TestCases/Data/CSV/pairs.csv b/TestCases/Data/CSV/pairs.csv new file mode 100644 index 00000000..1ab97e5c --- /dev/null +++ b/TestCases/Data/CSV/pairs.csv @@ -0,0 +1,11 @@ +,Supply_id +D0, +D1, +D2,S1 +D3,S3 +D4,S4 +D5,S5 +D6,S6 +D7, +D8,S8 +D9,S9 diff --git a/TestCases/Data/CSV/pairs1.xlsx b/TestCases/Data/CSV/pairs1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6b8942fc8c80e7ae20a59a211dc15bff11aab2e2 GIT binary patch literal 5052 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 delta 3677 zcmZ9PWmJ^i7J!Et7)m;ZZs{08Q3jCi7Lk_Jp=AI8i5G?v7(!+!5s*&-1?iHKZYhyQ zK~lOw7~=YUcddKZz30b1d#%0puk);D@6%?VU{j8V5{ZvRlMbX13j*D9P$Pa#>v1h@ z`kOu}Cqk%JtTH5HhCfqK?)rxZ6UwE?_0@eBsAEu-c~Ic?;C`LWEK`zR?<;>@ESp6^ zTSLl2zteJ=mNGK>jA+y9Vq^!RRwg%7rX~C0d|;mrHXAfl2L<_}Ts(0bycp+td$Cl_ zrYG!MAM24H&>sR?fl3(04Aqh0%Ia>FmSkn=zZyv$s|x@9+$LRgX=S9+K%WbJ%akCb z{zK5+w>2x=PsJE!^E7XI1%-Vo%d%8RdQ&i(HoC6bL)7fWwavbd$qvh<0vy`9a^?xG za&5;a@)uId#%Yw6Vvhxj#ijfSf3anStBbf@f9_Nak>pXIk!-n} zg!QcSeqV96M3iyGEq0a~Fz@glHF7%9d0h*xF(=3`S7hFgAX1!LJFd!Mtr(*qj$wVc zHJrzIgN*zFAgXUqO`~Z}PdD|zD9d2cCh4zPiVXZ9uDMCe(PR^c4Oy=zBjlRiQat|a zhiBb|LC<$TwqXXo{o^#*8$sQSYSNmon~njpYlfN$BPK)padyU3>npmVv8pD10vQbZGLfozIrWMl8& zSzXx4H(##brbeqw9>2_bay#yjPc?BfC~P>S{xo@wSUW9B+(;YvW$j1R{9zg!eE24ZrE#{Q z_&41hV3?8}d3*TqwWxfCVnSn`U;b_C#VHQ@&FT}@V$R!2nNy{#>$lh7R(aIhgFGwuPl*2+-4RCu11II?F=MvJ_F}BM=ccJ(VYds@uNB!MAmw|{B z$NYtnb`~v}4wa*wmMG#IjeFtHI~L776vgrjz^#j1#P?+?f&&#Xq7lA1CFm!OIAsh> z6Ub5IxU7i1N=iednaTiNGP;87HMG@p?RC3xC3NMV3=Hrzzds9P1t>e*RT>r33b&@U z6x0re1zP+JAWzA!f7tYLe7&q?Y7Z>0IQX9B4f8KW_z-W1*hz6&{HBXNpu<@t-q7!> zz=JQm7TaT~^qLB9>lzFXU++5GxM-cK3ik82Vq;;;6|e{n2oCmRxUT32avz0X8;`8F z9{W`b<#?bDVAwVY19m`+vI0m_mPw_mX3S$6mDuvLP_3LN9!7dM!wJJ zy3iM585`qkAr{E|;m(>aGR?(9ms;LKsl(QXUGpoE84x}Sd868$9nme)88kBByD6(< z^0Wja{4vJq8h2Q7S#j@#xh2{2ay}|g^-+gGHF1D?6sK-1paC-rh@wy=VYRXIsQ0a8 z2-LaydM3(ImZmEkx0H!sD_Qkq8*OEmNIRUC3XV(jJ<=(_S}%~+m9kN&>*OF0XlVes z_4Bp#u;xH%f6;-@szh^OSEI%1?M$H>7g@z6lQ6Y04`eLHsv_d9=>r{G!IP%5vDj)K z+@1uB*IG01qsVQ&Y^Ef~~GFX9S;qppDw90yuKC6|P?U{CaIU23NzloEvXFcn&o1ubd>DKe!T+3M|AwNe)IPa<)P(cQcc!OEGv(a8)IPA?;Y$nxLOw8Sa zgTESin0lF$@G*Q1N91Y2wu*!mjYL$ZC0t5hI!y;t%y1+e7`yY7L-^7?+s;il!tb_e zpod^ntHilP{N~cK66e)Q<7L6L2c?#RNN0m}iei}u#=N;gQcH`{J(;em9)#T&X9RFK55rkFb4R1bgDHmo27}SavZnIIIZ-9OS1+BHIfM6^Tu$Gj6uH2e zn6docXRTGc_oQC$Q!4@OBvP9=hEIgdzfYtz)lyb;E|QjbGVk4QNAykeXloZ&);TLd z5-DL-E-a6{PT`65(m>liFL1-~+h0gj=*6+?-0XLib5999=7I0Ol++7;s%+VjXElG9 zHH4VBDZNi`i9V9=KmWP!gqoOlfym@HT5DuFLEx{EvdF@dvnwfh~kMJ+Ddk-oVg; z3r%6{C*p1Coiof3iigCgjfpk8gj~gh`IW=c8Pmo&8s`)lmmb2Q*o|J+e*HP2>bMbF zO>ywXr3Gl6C;6e>t|QpWxR9J;%{Ts(7@#o1KC<7X`e)?AB&e%ac={lK?H%&Pjz4Y< zCIEq`|J(uY5{~xnj;cs|7f4Dm_95h@AA*GAcG5XS2R5mE zPs2*>x|v}s(iR+;(iDg-3UpD=`E`M$h!|`Dp*5yLWgrpw?MgZDet1@nh+A?StAfli z%9ymY)8b$>`MsUI4TQPf_pfi{v9Ito*(06(9dd)Jdf$~Umy=Izd7vdo3wq+Bx1evS zT#0Qpgi;z*O5bF^M*82Aj|icxWkw#p6eplfxXPck{-DdXIRNt|bqZNWJJnIAJ{ z)SY8nc^HU*#4oA(Ro?^z2mrTsIDOYVF`n|~uE$s5MHMT1AlSRzE-|6mx$i-|zDdfL z8LyUV*U3DpAibgbme)Soa)@53sfdawGv+v6G}y>GUd2P|sPYLP?_K))D~0P`U&j5pxtj`>x|sAR+p>|CQq5}Mc`nQGg_+`z^MDvuHT6sAc07| za>5=$pBr_p5e6%%9q z-}UVeO#eB0SaET6@Ml`ApZGnBVwQg}^YIOIclN<5i_x?FuO$D|^(Ud>_@hiEa2FR= zTEYYps>Ce{+J R0HzbfX2N-(Bf@_d{{@fw!|VV6 diff --git a/TestCases/Data/CSV/test_demand_IFS_result.csv b/TestCases/Data/CSV/test_demand_IFS_result.csv new file mode 100644 index 00000000..db856091 --- /dev/null +++ b/TestCases/Data/CSV/test_demand_IFS_result.csv @@ -0,0 +1,11 @@ +,Guid,Element,Material&Quality,Material,Quality,Length,Height,Width,Area,Volume,Moment of Inertia,Profile,Density,Site_lat,Site_lon,Gwp_factor,Price,Distance,Score,Transportation,Price element,GWP element +D0,"#5151=IfcSlab('33as9O3zjEnAsHHJOULX_B',#20,'Floor:HD-265:1393736',$,'Floor:HD-265',#5110,#5150,'1393736',.FLOOR.)",IfcSlab,Concrete - B35,Concrete,35,35.06,0.27,11.66,3.1482,110.37589200000001,0.019125315000000004,0.0,491,59.94161606,10.72994518,400.0,435,,44150.3568,0.0,48013.513020000006,44150.3568 +D1,"#5202=IfcBeam('33as9O3zjEnAsHHJOULXyg',#20,'Beam IPE:IPE 270:1393897',$,'Beam IPE:IPE 270',#5185,#5201,'1393897')",IfcBeam,Steel - S355,Steel,355,34.67,0.27,0.13,0.035100000000000006,1.2169170000000002,0.00021323250000000003,IPE 270,100,59.94161606,10.72994518,9263.0,6700,,11272.302171000003,0.0,8153.343900000002,11272.302171000003 +D2,"#5267=IfcBeam('33as9O3zjEnAsHHJOULXxA',#20,'Beam IPE:IPE 270:1393929',$,'Beam IPE:IPE 270',#5254,#5266,'1393929')",IfcBeam,Steel - S355,Steel,355,34.67,0.27,0.13,0.035100000000000006,1.2169170000000002,0.00021323250000000003,IPE 270,100,59.94161606,10.72994518,9263.0,6700,,11272.302171000003,0.0,8153.343900000002,11272.302171000003 +D3,"#5294=IfcBeam('33as9O3zjEnAsHHJOULXxO',#20,'Beam IPE:IPE 270:1393947',$,'Beam IPE:IPE 270',#5281,#5293,'1393947')",IfcBeam,Steel - S355,Steel,355,11.27,0.27,0.13,0.035100000000000006,0.39557700000000007,0.00021323250000000003,IPE 270,100,59.94161606,10.72994518,9263.0,6700,,3664.2297510000008,0.0,2650.3659000000002,3664.2297510000008 +D4,"#7660=IfcSlab('2I9WHjl$58$uOG2hQYWWMS',#20,'Punktfundament:F4:1408628',$,'Punktfundament:F4',#7650,#7659,'1408628',.BASESLAB.)",IfcSlab,Concrete - B35,Concrete,35,2.0,2.0,2.0,4.0,8.0,1.3333333333333333,0.0,491,59.94161606,10.72994518,400.0,435,,3200.0,0.0,3480.0,3200.0 +D5,"#7691=IfcSlab('2I9WHjl$58$uOG2hQYWWMU',#20,'Punktfundament:F3:1408630',$,'Punktfundament:F3',#7681,#7690,'1408630',.BASESLAB.)",IfcSlab,Concrete - B35,Concrete,35,2.0,2.0,2.0,4.0,8.0,1.3333333333333333,0.0,491,59.94161606,10.72994518,400.0,435,,3200.0,0.0,3480.0,3200.0 +D6,"#8453=IfcSlab('2r6pcFq511UeZXcuDB_GrX',#20,'Floor:Lettak-element:1412380',$,'Floor:Lettak-element',#8439,#8452,'1412380',.FLOOR.)",IfcBeam,Timber - C24,Timber,24,35.3,0.4,0.4,0.16000000000000003,5.648000000000001,0.002133333333333334,0.0,200,59.94161606,10.72994518,15.0,100,,84.72000000000001,0.0,564.8000000000001,84.72000000000001 +D7,"#7660=IfcSlab('2I9WHjl$58$uOG2hQYWWMS',#20,'Punktfundament:F4:1408628',$,'Punktfundament:F4',#7650,#7659,'1408628',.BASESLAB.)",IfcDoor,Door,Door,1,1.0,1.5,1.0,1.5,1.5,0.28125,0.0,200,59.94161606,10.72994518,10.0,250,,15.0,0.0,375.0,15.0 +D8,"#7691=IfcSlab('2I9WHjl$58$uOG2hQYWWMU',#20,'Punktfundament:F3:1408630',$,'Punktfundament:F3',#7681,#7690,'1408630',.BASESLAB.)",IfcDoor,Door,Door,1,1.0,1.5,1.0,1.5,1.5,0.28125,0.0,200,59.94161606,10.72994518,10.0,250,,15.0,0.0,375.0,15.0 +D9,"#8453=IfcSlab('2r6pcFq511UeZXcuDB_GrX',#20,'Floor:Lettak-element:1412380',$,'Floor:Lettak-element',#8439,#8452,'1412380',.FLOOR.)",IfcWindow,Window,Window,1,1.0,1.0,1.0,1.0,1.0,0.08333333333333333,0.0,491,59.94161606,10.72994518,28.9,435,,28.9,0.0,435.0,28.9 diff --git a/TestCases/Data/CSV/test_demand_IFS_result1.xlsx b/TestCases/Data/CSV/test_demand_IFS_result1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f3b7c7e58eea86d97773ad3082badc2e6dff426c GIT binary patch literal 6636 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 literal 0 HcmV?d00001 diff --git a/TestCases/Data/CSV/test_supply_IFC.xlsx b/TestCases/Data/CSV/test_supply_IFC.xlsx index 1ed75cca18ff58b43c55391b2cff3dfc28121ac7..85711a35f3e18364443802da3cb82f769b525248 100644 GIT binary patch delta 6550 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 K)+B-F@9tk=5f+;O diff --git a/TestCases/Data/CSV/test_supply_IFC_result.csv b/TestCases/Data/CSV/test_supply_IFC_result.csv new file mode 100644 index 00000000..3bada9a0 --- /dev/null +++ b/TestCases/Data/CSV/test_supply_IFC_result.csv @@ -0,0 +1,11 @@ +,Guid,Element,Material&Quality,Material,Quality,Length,Height,Width,Area,Volume,Moment of Inertia,Profile,Density,Site_lat,Site_lon,Gwp_factor,Price,Distance,Score,Transportation,Price element,GWP element +S0,"#5151=IfcSlab('33as9O3zjEnAsHHJOULX_B',#20,'Floor:HD-265:1393736',$,'Floor:HD-265',#5110,#5150,'1393736',.FLOOR.)",IfcSlab,Concrete - B35,Concrete ,35,35.06,0.27,11.66,3.1482,110.37589200000001,0.019125315000000004,0.0,491,59.94161606,10.72994518,100.0,100,,11037.5892,0.0,11037.5892,11037.5892 +S1,"#5267=IfcBeam('33as9O3zjEnAsHHJOULXxA',#20,'Beam IPE:IPE 270:1393929',$,'Beam IPE:IPE 270',#5254,#5266,'1393929')",IfcBeam,Steel - S355,Steel,355,10.0,0.27,0.13,0.035100000000000006,0.3510000000000001,0.00021323250000000003,IPE 270,100,59.94161606,10.72994518,200.0,6700,,70.20000000000002,0.0,2351.7000000000007,70.20000000000002 +S2,"#5202=IfcBeam('33as9O3zjEnAsHHJOULXyg',#20,'Beam IPE:IPE 270:1393897',$,'Beam IPE:IPE 270',#5185,#5201,'1393897')",IfcBeam,Steel - S355,Steel,355,34.67,0.27,0.13,0.035100000000000006,1.2169170000000002,0.00021323250000000003,IPE 270,100,59.94161606,10.72994518,200.0,6700,,243.38340000000005,0.0,8153.343900000002,243.38340000000005 +S3,"#5294=IfcBeam('33as9O3zjEnAsHHJOULXxO',#20,'Beam IPE:IPE 270:1393947',$,'Beam IPE:IPE 270',#5281,#5293,'1393947')",IfcBeam,Steel - S355,Steel,355,11.27,0.27,0.13,0.035100000000000006,0.39557700000000007,0.00021323250000000003,IPE 270,100,59.94161606,10.72994518,200.0,6700,,79.11540000000001,0.0,2650.3659000000002,79.11540000000001 +S4,"#7660=IfcSlab('2I9WHjl$58$uOG2hQYWWMS',#20,'Punktfundament:F4:1408628',$,'Punktfundament:F4',#7650,#7659,'1408628',.BASESLAB.)",IfcSlab,Concrete - B35,Concrete,35,2.0,2.0,2.0,4.0,8.0,1.3333333333333333,0.0,491,59.94161606,10.72994518,100.0,100,,800.0,0.0,800.0,800.0 +S5,"#7691=IfcSlab('2I9WHjl$58$uOG2hQYWWMU',#20,'Punktfundament:F3:1408630',$,'Punktfundament:F3',#7681,#7690,'1408630',.BASESLAB.)",IfcSlab,Concrete - B35,Concrete,35,2.0,2.0,2.0,4.0,8.0,1.3333333333333333,0.0,491,59.94161606,10.72994518,100.0,100,,800.0,0.0,800.0,800.0 +S6,"#8453=IfcSlab('2r6pcFq511UeZXcuDB_GrX',#20,'Floor:Lettak-element:1412380',$,'Floor:Lettak-element',#8439,#8452,'1412380',.FLOOR.)",IfcBeam,Timber - C24,Timber,24,35.3,0.4,0.4,0.16000000000000003,5.648000000000001,0.002133333333333334,0.0,200,59.94161606,10.72994518,1.5,70,,8.472000000000001,0.0,395.36,8.472000000000001 +S7,"#7660=IfcSlab('2I9WHjl$58$uOG2hQYWWMS',#20,'Punktfundament:F4:1408628',$,'Punktfundament:F4',#7650,#7659,'1408628',.BASESLAB.)",IfcDoor,Door,Door,1,1.0,2.0,1.0,2.0,2.0,0.6666666666666666,0.0,200,59.94161606,10.72994518,3.0,80,,6.0,0.0,160.0,6.0 +S8,"#7691=IfcSlab('2I9WHjl$58$uOG2hQYWWMU',#20,'Punktfundament:F3:1408630',$,'Punktfundament:F3',#7681,#7690,'1408630',.BASESLAB.)",IfcDoor,Door,Door,1,1.0,1.5,1.0,1.5,1.5,0.28125,0.0,200,59.94161606,10.72994518,3.0,80,,4.5,0.0,120.0,4.5 +S9,"#8453=IfcSlab('2r6pcFq511UeZXcuDB_GrX',#20,'Floor:Lettak-element:1412380',$,'Floor:Lettak-element',#8439,#8452,'1412380',.FLOOR.)",IfcWindow,Window,Window,1,1.0,1.0,1.0,1.0,1.0,0.08333333333333333,0.0,491,59.94161606,10.72994518,2.25,100,,2.25,0.0,100.0,2.25 diff --git a/TestCases/Data/CSV/test_supply_IFC_result1.xlsx b/TestCases/Data/CSV/test_supply_IFC_result1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4ecc7813e87de6b5c3217eeef56c8a8ce2626ee4 GIT binary patch literal 6649 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 literal 0 HcmV?d00001 diff --git a/TestCases/study_case_gh2.py b/TestCases/study_case_gh2.py index ad6cfd52..45cdb50a 100644 --- a/TestCases/study_case_gh2.py +++ b/TestCases/study_case_gh2.py @@ -23,41 +23,7 @@ #Constants #TODO: FIND ALL DEFAULT VALUES FOR CONSTANTS, especially for price constants = { - "CONCRETE_GWP": 28.9, - "CONCRETE_REUSE_GWP": 2.25, - "CONCRETE_DENSITY": 491.0, - "CONCRETE_PRICE": 435, - "CONCRETE_REUSE_PRICE" : 100, - - "CONCRETE - B35_GWP": 28.9, - "CONCRETE - B35_REUSE_GWP": 2.25, - "CONCRETE - B35_DENSITY": 491.0, - "CONCRETE - B35_PRICE": 435, - "CONCRETE - B35_REUSE_PRICE" : 100, - - "STEEL - S355_GWP": 28.9, - "STEEL - S355_REUSE_GWP": 2.25, - "STEEL - S355_DENSITY": 491.0, - "STEEL - S355_PRICE": 435, - "STEEL - S355_REUSE_PRICE" : 100, - - "STEEL - S235_GWP": 28.9, - "STEEL - S235_REUSE_GWP": 2.25, - "STEEL - S235_DENSITY": 491.0, - "STEEL - S235_PRICE": 435, - "STEEL - S235_REUSE_PRICE" : 100, - - "SLAB_GWP": 28.9, - "SLAB_REUSE_GWP": 2.25, - "SLAB_DENSITY": 491.0, - "SLAB_PRICE": 435, - "SLAB_REUSE_PRICE" : 100, - - "BEAM_GWP": 28.9, - "BEAM_REUSE_GWP": 2.25, - "BEAM_DENSITY": 491.0, - "BEAM_PRICE": 435, - "BEAM_REUSE_PRICE" : 100, + "WINDOW_GWP": 28.9, "WINDOW_REUSE_GWP": 2.25, @@ -65,26 +31,35 @@ "WINDOW_PRICE": 435, "WINDOW_REUSE_PRICE" : 100, - "DOOR_GWP": 28.9, - "DOOR_REUSE_GWP": 2.25, - "DOOR_DENSITY": 491.0, - "DOOR_PRICE": 435, - "DOOR_REUSE_PRICE" : 100, + "DOOR_GWP": 10, + "DOOR_REUSE_GWP": 3, + "DOOR_DENSITY": 200, + "DOOR_PRICE": 250, + "DOOR_REUSE_PRICE" : 80, - "TIMBER_GWP": 28.9, # based on NEPD-3442-2053-EN - "TIMBER_REUSE_GWP": 2.25, # 0.0778*28.9 = 2.25 based on Eberhardt - "TRANSPORT_GWP": 96.0, # TODO kg/m3/t based on ???? - "TIMBER_DENSITY": 491.0, # kg, based on NEPD-3442-2053-EN + "TIMBER_GWP": 15, # based on NEPD-3442-2053-EN + "TIMBER_REUSE_GWP": 1.5, # 0.0778*28.9 = 2.25 based on Eberhardt + "TIMBER_DENSITY": 200, # kg, based on NEPD-3442-2053-EN + "TIMBER_PRICE": 100, #Per m^3 https://www.landkredittbank.no/blogg/2021/prisen-pa-sagtommer-okte-20-prosent/ + "TIMBER_REUSE_PRICE" : 70, #Per m^3, Random value + + "CONCRETE_GWP": 400, + "CONCRETE_DENSITY": 491.0, + "CONCRETE_PRICE": 435, + "CONCRETE_REUSE_PRICE" : 100, + "CONCRETE_REUSE_GWP": 100, + + "STEEL_GWP": 9263, # [kg CO2 pr m^3] Taken from Trine and Elise + "STEEL_REUSE_GWP": 200, #[kg CO2 pr m^3] Taken from Trine and Elise + "STEEL_PRICE": 6, #[NOK pr m^3] Taken from Trine and Elise + "STEEL_REUSE_PRICE": 67, #[NOK pr m^3] Taken from Trine and Elise + "STEEL_DENSITY": 100, #[kg pr m^3] Taken from Trine and Elise + + "VALUATION_GWP": 0.7, #In kr:Per kg CO2, based on OECD + "PRICE_TRANSPORTATION": 4, #Price per km per tonn. Derived from 2011 numbers on scaled t0 2022 using SSB + "TRANSPORT_GWP": 81, # TODO kg/m3/t based on ???? + "Price" : 100, - "STEEL_GWP": 800, #Random value - "STEEL_REUSE_GWP": 4, #Random value - "VALUATION_GWP": 0.6, #In kr:Per kg CO2, based on OECD - "TIMBER_PRICE": 435, #Per m^3 https://www.landkredittbank.no/blogg/2021/prisen-pa-sagtommer-okte-20-prosent/ - "TIMBER_REUSE_PRICE" : 100, #Per m^3, Random value - "STEEL_PRICE": 500, #Per m^2, Random value - "STEEL_REUSE_PRICE": 200, #Per m^2, Random value - "PRICE_TRANSPORTATION": 3.78, #Price per km per tonn. Derived from 2011 numbers on scaled t0 2022 using SSB - "STEEL_DENSITY": 7850, ######################## @@ -118,13 +93,19 @@ "constraint_dict": {'Area' : '>=', 'Moment of Inertia' : '>=', 'Length' : '>=', 'Width' : '>=', 'Height' : '>=', 'Material': '==', 'Quality' : '>='}, "constraint2D_dict" : {'Width' : '==', 'Height' : '==', 'Material' : '==', 'Quality' : '>='}, - "constraint3D_dict" : {'Length' : '>=','Width' : '==', 'Height' : '==', 'Material' : '==', 'Quality' : '>='} + "constraint3D_dict" : {'Length' : '>=','Width' : '==', 'Height' : '==', 'Material' : '==', 'Quality' : '>='}, + + "materials" : {"Timber", "Steel", "Window", "Door", "Slab", "Concrete - B35", "Steel - S355", "Steel - S235"}, + "element_linear" : {"IfcBeam", "IfcColumn"}, + "element_2d" : {"IfcWindow", "IfcDoor"}, + "element_3d" : {"IfcSlab"} } #========================# #Generating dataset #=================== supply_coords = pd.DataFrame(columns = ["Location", "Latitude", "Longitude"]) + tiller = ["Tiller", "63.3604", "10.4008"] gjovik = ["Gjovik", "60.8941", "10.5001"] orkanger = ["Orkanger", "63.3000", "9.8468"] @@ -137,8 +118,8 @@ -materials = ["Timber", "Steel", "Window", "Door", "Slab", "Concrete - B35", "Steel - S355", "Steel - S235"] -name = ["IfcBeam", "IfcColumn", "IfcSlab"] + + #GENERATE FILE #============ @@ -149,31 +130,84 @@ """ #======================================== score_function_string = hm.generate_score_function_string(constants) +score_function_string_2d = hm.generate_score_function_string_2d(constants) + supply = hm.import_dataframe_from_file(r"" + constants["Supply file location"], index_replacer = "S") demand = hm.import_dataframe_from_file(r"" + constants["Demand file location"], index_replacer = "D") - #hm.create_graph(supply, demand, "Length", number_of_intervals= 2, save_filename = r"C:\Users\sigur\Downloads\test.png") constraint_dict = constants["constraint_dict"] constraint2D_dict = constants["constraint2D_dict"] constraint3D_dict = constants["constraint3D_dict"] + + #Add necessary columns to run the algorithm supply = hmpdf.add_necessary_columns_pdf(supply, constants) demand = hmpdf.add_necessary_columns_pdf(demand, constants) -m= Matching(demand, supply, score_function_string, constraints = constraint_dict, constraints2D = constraint2D_dict, constraints3D = constraint3D_dict, solution_limit=60) + +m= Matching(demand, supply, score_function_string, score_function_string_2d, constraints = constraint_dict, constraints2D = constraint2D_dict, constraints3D = constraint3D_dict, solution_limit=60, constants = constants) m.match_greedy(plural_assign=True) -print(m.weights) simple_pairs = m.pairs m.calculate_result() simple_results = m.result - - +print("------------------------- Results -------------------------") +print("Weights matrix ") +print(m.weights) +print() +print("Algorithm used; " + ", ".join(constants["Algorithms"])) +print() print("Simple pairs:") print(simple_pairs) - print() -print("Simple results") -print(simple_results) \ No newline at end of file +if (constants["Metric"] == "Price"): + print("Simple " + constants["Metric"] + " score;") +if (constants["Metric"] == "GWP"): + print("Simple " + constants["Metric"] + " score;") +if (constants["Metric"] == "Combined"): + print("Simple " + constants["Metric"] + " score;") +print(simple_results) + +constants["Metric"] = "Price" +score_function_string = hm.generate_score_function_string(constants) +score_function_string = score_function_string.replace(" ", "") + + +if tuple(m.demand['Element'].tolist()) in constants["element_linear"] or tuple(m.demand['Element'].tolist()) in constants["element_3d"]: + m.demand['Price pr element'], m.demand['Transportation'] = m.demand.eval(m.score_function_string) +else: + m.demand['Price pr element'], m.demand['Transportation'] = m.demand.eval(m.score_function_string_2d) + +if tuple(m.supply['Element'].tolist()) in constants["element_linear"] or tuple(m.supply['Element'].tolist()) in constants["element_3d"]: + m.supply['Price pr element'], m.supply['Transportation'] = m.supply.eval(m.score_function_string) +else: + m.supply['Price pr element'], m.supply['Transportation'] = m.supply.eval(m.score_function_string_2d) + + +constants["Metric"] = "GWP" +score_function_string = hm.generate_score_function_string(constants) +score_function_string = score_function_string.replace(" ", "") + + +if tuple(m.demand['Element'].tolist()) in constants["element_linear"] or tuple(m.demand['Element'].tolist()) in constants["element_3d"]: + m.demand['GWP pr element'], m.demand['Transportation'] = m.demand.eval(m.score_function_string) +else: + m.demand['GWP pr element'], m.demand['Transportation'] = m.demand.eval(m.score_function_string_2d) + +if tuple(m.supply['Element'].tolist()) in constants["element_linear"] or tuple(m.supply['Element'].tolist()) in constants["element_3d"]: + m.supply['GWP pr element'], m.supply['Transportation'] = m.supply.eval(m.score_function_string) +else: + m.supply['GWP pr element'], m.supply['Transportation'] = m.supply.eval(m.score_function_string_2d) + +hm.export_dataframe_to_xlsx(m.supply, r"" + "./TestCases/Data/CSV/test_supply_IFC_result1.xlsx") +hm.export_dataframe_to_xlsx(m.demand, r"" + "./TestCases/Data/CSV/test_demand_IFS_result1.xlsx") +hm.export_dataframe_to_xlsx(m.pairs, r"" + "./TestCases/Data/CSV/pairs1.xlsx") + + + + + +print(m.demand) +print(m.supply) From b1a481589aebc98883a3a28b98f8a82794c63d0e Mon Sep 17 00:00:00 2001 From: erikkko Date: Sat, 20 Apr 2024 16:33:15 +0200 Subject: [PATCH 5/5] test --- .../FirstPythonComponent.AssemblyInfo.cs | 2 +- ...stPythonComponent.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 2 +- .../net48/FirstPythonComponent.assets.cache | Bin 13966 -> 13966 bytes ...stPythonComponent.csproj.nuget.dgspec.json | 10 +- .../obj/project.assets.json | 6 +- .../obj/project.nuget.cache | 4 +- LICENSE | 21 --- Matching/helper_methods.py | 2 +- Matching/helper_methods_LCA.py | 2 +- Matching/helper_methods_PDF.py | 3 +- Matching/matching.py | 168 ++++++++++++++++-- .../Data/CSV/DEMAND_DATAFRAME_SVERRE.xlsx | Bin 15304 -> 0 bytes .../Data/CSV/DEMAND_TEST_FILL_CLOSEST.xlsx | Bin 14815 -> 0 bytes TestCases/Data/CSV/Demand_homemade.xlsx | Bin 0 -> 10942 bytes TestCases/Data/CSV/Results/pairs.xlsx | Bin 0 -> 5153 bytes .../CSV/Results/test_demand_IFS_result1.xlsx | Bin 0 -> 7389 bytes .../CSV/Results/test_supply_IFC_result1.xlsx | Bin 0 -> 9377 bytes .../Data/CSV/SUPPLY_DATAFRAME_SVERRE.xlsx | Bin 26929 -> 0 bytes TestCases/Data/CSV/Supply_homemade.xlsx | Bin 0 -> 13425 bytes TestCases/Data/CSV/basic_study_demand.csv | 11 -- TestCases/Data/CSV/basic_study_supply.csv | 11 -- TestCases/Data/CSV/bool_array.xlsx | Bin 0 -> 6561 bytes TestCases/Data/CSV/bool_array1.xlsx | Bin 0 -> 6561 bytes TestCases/Data/CSV/con_new_demand.xlsx | Bin 104843 -> 0 bytes TestCases/Data/CSV/con_new_supply.xlsx | Bin 114708 -> 0 bytes TestCases/Data/CSV/conference_demand.xlsx | Bin 39610 -> 0 bytes TestCases/Data/CSV/conference_supply.xlsx | Bin 43282 -> 0 bytes TestCases/Data/CSV/gh_demand.csv | 11 -- TestCases/Data/CSV/gh_demand1.csv | 11 -- TestCases/Data/CSV/gh_supply.csv | 11 -- TestCases/Data/CSV/gh_supply1.csv | 11 -- TestCases/Data/CSV/master_thesis_demand.xlsx | Bin 51019 -> 0 bytes TestCases/Data/CSV/master_thesis_supply.xlsx | Bin 53646 -> 0 bytes TestCases/Data/CSV/pairs.csv | 11 -- TestCases/Data/CSV/pairs1.xlsx | Bin 5052 -> 5151 bytes .../Data/CSV/test_demand_IFS_result1.xlsx | Bin 6636 -> 7370 bytes .../Data/CSV/test_supply_IFC_result1.xlsx | Bin 6649 -> 9373 bytes TestCases/study_case_gh2.py | 36 ++-- __init__.py | 0 40 files changed, 194 insertions(+), 141 deletions(-) delete mode 100644 LICENSE delete mode 100644 TestCases/Data/CSV/DEMAND_DATAFRAME_SVERRE.xlsx delete mode 100644 TestCases/Data/CSV/DEMAND_TEST_FILL_CLOSEST.xlsx create mode 100644 TestCases/Data/CSV/Demand_homemade.xlsx create mode 100644 TestCases/Data/CSV/Results/pairs.xlsx create mode 100644 TestCases/Data/CSV/Results/test_demand_IFS_result1.xlsx create mode 100644 TestCases/Data/CSV/Results/test_supply_IFC_result1.xlsx delete mode 100644 TestCases/Data/CSV/SUPPLY_DATAFRAME_SVERRE.xlsx create mode 100644 TestCases/Data/CSV/Supply_homemade.xlsx delete mode 100644 TestCases/Data/CSV/basic_study_demand.csv delete mode 100644 TestCases/Data/CSV/basic_study_supply.csv create mode 100644 TestCases/Data/CSV/bool_array.xlsx create mode 100644 TestCases/Data/CSV/bool_array1.xlsx delete mode 100644 TestCases/Data/CSV/con_new_demand.xlsx delete mode 100644 TestCases/Data/CSV/con_new_supply.xlsx delete mode 100644 TestCases/Data/CSV/conference_demand.xlsx delete mode 100644 TestCases/Data/CSV/conference_supply.xlsx delete mode 100644 TestCases/Data/CSV/gh_demand.csv delete mode 100644 TestCases/Data/CSV/gh_demand1.csv delete mode 100644 TestCases/Data/CSV/gh_supply.csv delete mode 100644 TestCases/Data/CSV/gh_supply1.csv delete mode 100644 TestCases/Data/CSV/master_thesis_demand.xlsx delete mode 100644 TestCases/Data/CSV/master_thesis_supply.xlsx delete mode 100644 TestCases/Data/CSV/pairs.csv create mode 100644 __init__.py diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs index f410d6b6..aa9bd111 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfo.cs @@ -14,7 +14,7 @@ [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyDescriptionAttribute("Description of FirstPythonComponent")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+3852e87b87c9c4a8c8b142bce85ad3eaa7d90ec4")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+ee82959b717ba2d1f8eb8d224c92e0a34d994b9c")] [assembly: System.Reflection.AssemblyProductAttribute("FirstPythonComponent")] [assembly: System.Reflection.AssemblyTitleAttribute("FirstPythonComponent")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache index 63168e28..4baca82b 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.AssemblyInfoInputs.cache @@ -1 +1 @@ -7bb123c14a65a0837a86b702b33839f43e48e6f6afefd3115090346a497964db +674c324a057b8b4ebf2cf4babef0f003ddee311105319425e88a53a044783464 diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.GeneratedMSBuildEditorConfig.editorconfig b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.GeneratedMSBuildEditorConfig.editorconfig index 5681e3e5..a55e03c9 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.GeneratedMSBuildEditorConfig.editorconfig +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.GeneratedMSBuildEditorConfig.editorconfig @@ -1,5 +1,5 @@ is_global = true build_property.RootNamespace = FirstPythonComponent -build_property.ProjectDir = C:\Users\kollb\OneDrive - NTNU\Skole\5 klasse\Master\MasterVS\Master-Thesis-NTNU\GrasshopperSolution\C#_Python_Component\FirstPythonComponent\ +build_property.ProjectDir = C:\Users\kollb\Master\Master-Thesis-NTNU\app\matchingTool\src\GrasshopperSolution\C#_Python_Component\FirstPythonComponent\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.assets.cache b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/Debug/net48/FirstPythonComponent.assets.cache index 90f9ea2459be763ffa558770d3de5687e6c735ff..5922b22b7744c0efc61d66a06e676f30c13c7145 100644 GIT binary patch delta 49 zcmV-10M7r8ZH{dyP)kQa3;+NCp>lC8qN-24G4Ibfyw^NFsyB3P%^Mxf+$Kq`gDf+m Hu_$IX-**%c delta 49 zcmeCn?aS2&@OF3PVPIgGF4p#8wlVv=*$e!3UOMiUXMe$t^-sl=o&JU?98FTH(i=6> F%mCX<6B7Uc diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/FirstPythonComponent.csproj.nuget.dgspec.json b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/FirstPythonComponent.csproj.nuget.dgspec.json index e1b3a71e..b13ddd09 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/FirstPythonComponent.csproj.nuget.dgspec.json +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/FirstPythonComponent.csproj.nuget.dgspec.json @@ -1,17 +1,17 @@ { "format": 1, "restore": { - "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj": {} + "C:\\Users\\kollb\\Master\\Master-Thesis-NTNU\\app\\matchingTool\\src\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj": {} }, "projects": { - "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj": { + "C:\\Users\\kollb\\Master\\Master-Thesis-NTNU\\app\\matchingTool\\src\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", + "projectUniqueName": "C:\\Users\\kollb\\Master\\Master-Thesis-NTNU\\app\\matchingTool\\src\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", "projectName": "FirstPythonComponent", - "projectPath": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", + "projectPath": "C:\\Users\\kollb\\Master\\Master-Thesis-NTNU\\app\\matchingTool\\src\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", "packagesPath": "C:\\Users\\kollb\\.nuget\\packages\\", - "outputPath": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\obj\\", + "outputPath": "C:\\Users\\kollb\\Master\\Master-Thesis-NTNU\\app\\matchingTool\\src\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\kollb\\AppData\\Roaming\\NuGet\\NuGet.Config", diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.assets.json b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.assets.json index 7b88ef47..4ce4d69a 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.assets.json +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.assets.json @@ -933,11 +933,11 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", + "projectUniqueName": "C:\\Users\\kollb\\Master\\Master-Thesis-NTNU\\app\\matchingTool\\src\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", "projectName": "FirstPythonComponent", - "projectPath": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", + "projectPath": "C:\\Users\\kollb\\Master\\Master-Thesis-NTNU\\app\\matchingTool\\src\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", "packagesPath": "C:\\Users\\kollb\\.nuget\\packages\\", - "outputPath": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\obj\\", + "outputPath": "C:\\Users\\kollb\\Master\\Master-Thesis-NTNU\\app\\matchingTool\\src\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\kollb\\AppData\\Roaming\\NuGet\\NuGet.Config", diff --git a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.nuget.cache b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.nuget.cache index c6414570..c8597347 100644 --- a/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.nuget.cache +++ b/GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "rOu7UNz3zu0jwcM7nXAVeQKAIw2x4xi33TwIAGQERmGyJAYYtuSXxHdPcpbnmqQ+60Gc7XbtG3HRSXlISyCHUg==", + "dgSpecHash": "py00i1mxsCVCU1VquSIbg5uZNt26aFfc6pufc+FEgofBNUq0zZTU+6GfK7J+J89v+BpNk05+3kCRy38dFFuxCA==", "success": true, - "projectFilePath": "C:\\Users\\kollb\\OneDrive - NTNU\\Skole\\5 klasse\\Master\\MasterVS\\Master-Thesis-NTNU\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", + "projectFilePath": "C:\\Users\\kollb\\Master\\Master-Thesis-NTNU\\app\\matchingTool\\src\\GrasshopperSolution\\C#_Python_Component\\FirstPythonComponent\\FirstPythonComponent.csproj", "expectedPackageFiles": [ "C:\\Users\\kollb\\.nuget\\packages\\grasshopper\\7.13.21348.13001\\grasshopper.7.13.21348.13001.nupkg.sha512", "C:\\Users\\kollb\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512", diff --git a/LICENSE b/LICENSE deleted file mode 100644 index b506634b..00000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 Artur Tomczak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Matching/helper_methods.py b/Matching/helper_methods.py index eaf62997..ddc32a40 100644 --- a/Matching/helper_methods.py +++ b/Matching/helper_methods.py @@ -11,7 +11,7 @@ import json # Opening JSON file -with open('Matching\Data\LCA_data.json') as json_file: +with open('app\matchingTool\src\Matching\Data\LCA_data.json') as json_file: data = json.load(json_file) # ==== HELPER METHODS ==== diff --git a/Matching/helper_methods_LCA.py b/Matching/helper_methods_LCA.py index 2aea7eea..f4984cb4 100644 --- a/Matching/helper_methods_LCA.py +++ b/Matching/helper_methods_LCA.py @@ -3,7 +3,7 @@ import json # Opening JSON file -with open('Matching\Data\LCA_data.json') as json_file: +with open('app\matchingTool\src\Matching\Data\LCA_data.json') as json_file: data = json.load(json_file) def calculate_lca(length, area, gwp_factor, include_transportation=False, distance=100, transport_gwp=100, density=100): diff --git a/Matching/helper_methods_PDF.py b/Matching/helper_methods_PDF.py index dd5c2648..ddc1e244 100644 --- a/Matching/helper_methods_PDF.py +++ b/Matching/helper_methods_PDF.py @@ -563,7 +563,8 @@ def add_necessary_columns_pdf(dataframe, constants): #Adding necessary columns based on the chosen metric for row in range(len(dataframe)): - material = dataframe.iloc[row][dataframe.columns.get_loc("Material")].split()[0] #NOTE: Assumes that material-column has the material name as the first word, e.g. "Timber C14" or "Steel ASTM A992" + #material = dataframe.iloc[row][dataframe.columns.get_loc("Material")].split()[0] #NOTE: Assumes that material-column has the material name as the first word, e.g. "Timber C14" or "Steel ASTM A992" + material = dataframe.iloc[row][dataframe.columns.get_loc("Material")] dataframe.iloc[row, dataframe.columns.get_loc("Density")] = constants[f"{material.upper()}_DENSITY"] if element_type == "S": diff --git a/Matching/matching.py b/Matching/matching.py index 86ae52af..08296fa9 100644 --- a/Matching/matching.py +++ b/Matching/matching.py @@ -33,7 +33,7 @@ class Matching(): """Class describing the matching problem, with its constituent parts.""" - def __init__(self, demand, supply, score_function_string, score_function_string_2d, constants = None, add_new=False, multi=False, constraints={}, constraints2D={}, constraints3D={}, solution_limit=60): + def __init__(self, demand, supply, score_function_string, score_function_string_2d, constants, add_new=False, multi=False, constraints={}, constraints2D={}, constraints3D={}, solution_limit=60): """_summary_ :param demand: _description_ @@ -106,8 +106,8 @@ def __init__(self, demand, supply, score_function_string, score_function_string_ self.demand['Score'] = self.demand.eval(score_function_string)[0] self.supply['Score'] = self.supply.eval(score_function_string)[0] self.incidence = self.evaluate_incidence() - self.weights, self.weights_transport = self.evaluate_weights() self.constants = constants + self.weights, self.weights_transport = self.evaluate_weights() #self.match_greedy(plural_assign=True) logging.info("Matching object created with %s demand, and %s supply elements", len(demand), len(supply)) @@ -180,8 +180,96 @@ def evaluate_transportation(self): self.supply["Distance"] = np.NaN self.demand["Distance"] = np.NaN + + def evaluate_incidence(self): - """Returns incidence matrix with true values where the element fit constraint criteria""" + """Returns incidence matrix with true values where the element fit constraint criteria""" + # TODO optimize the evaluation. + # TODO add 'Distance' 'Price' 'Material' 'Density' 'Imperfections' 'Is_column' 'Utilisation' 'Group' 'Quality' 'Max_height' ? + #TODO Create standalone method for evaluating one column Rj of the incidence matrix. Need this for cutoffs in greedy algorithm as well. + start = time.time() + #constraints = [] test change + + bool_array = np.full((self.demand.shape[0], self.supply.shape[0]), True) # initiate empty array + constraint_dict = self.constraints.items() + nrSupply = self.supply.shape[0] + nrDemand = self.demand.shape[0] + + for i in range(nrDemand): + for j in range(nrSupply): + #Check if element type is right + if (self.demand.iloc[i, 1] != self.supply.iloc[j, 1]): + print([i],[j]) + print(False) + bool_array[i][j] = False + #Check if material type is right + elif (self.demand.iloc[i, 2] != self.supply.iloc[j, 2]): + print([i],[j]) + bool_array[i][j] = False + print(False) + #Check if the constraints are right for the type of element + else: + #If the elements are linear + if (self.demand.iloc[i, 1] == "IfcBeam" or self.demand.iloc[i, 1] == "IfcColumn"): + for param, compare in self.constraints.items(): + supply_array = self.supply[param].to_list() + demand_array = self.demand[param].to_list() + if eval(f"supply_array[j] {compare} demand_array[i]"): + print(param) + print(f"supply_array[j] {compare} demand_array[i]") + print([i],[j]) + bool_array[i][j] = True + + else: + print(param) + print(f"supply_array[j] {compare} demand_array[i]") + print([i],[j]) + bool_array[i][j] = False + print(False) + break + #If the elements are 2D + elif (self.demand.iloc[i, 1] == "IfcWindow" or self.demand.iloc[i, 1] == "IfcDoor" or self.demand.iloc[i, 1] == "IfcWall"): + for param, compare in self.constraints2D.items(): + supply_array = self.supply[param].to_list() + demand_array = self.demand[param].to_list() + if eval(f"supply_array[j] {compare} demand_array[i]"): + print(param) + print(f"supply_array[j] {compare} demand_array[i]") + print([i],[j]) + bool_array[i][j] = True + else: + print(param) + print(f"supply_array[j] {compare} demand_array[i]") + print([i],[j]) + bool_array[i][j] = False + print(False) + break + #If the elements are 3D + elif (self.demand.iloc[i, 1] == "IfcSlab"): + for param, compare in self.constraints3D.items(): + supply_array = self.supply[param].to_list() + demand_array = self.demand[param].to_list() + + if eval(f"supply_array[j] {compare} demand_array[i]"): + print(param) + print(f"supply_array[j] {compare} demand_array[i]") + print([i],[j]) + bool_array[i][j] = True + else: + print(param) + print(f"supply_array[j] {compare} demand_array[i]") + print([i],[j]) + bool_array[i][j] = False + print(False) + break + + hm.export_dataframe_to_xlsx(pd.DataFrame(bool_array, columns= self.incidence.columns, index= self.incidence.index), r"" + "./app/matchingTool/src/TestCases/Data/CSV/bool_array1.xlsx") + return pd.DataFrame(bool_array, columns= self.incidence.columns, index= self.incidence.index) + + """ + + def evaluate_incidence(self): + Returns incidence matrix with true values where the element fit constraint criteria # TODO optimize the evaluation. # TODO add 'Distance' 'Price' 'Material' 'Density' 'Imperfections' 'Is_column' 'Utilisation' 'Group' 'Quality' 'Max_height' ? #TODO Create standalone method for evaluating one column Rj of the incidence matrix. Need this for cutoffs in greedy algorithm as well. @@ -192,17 +280,19 @@ def evaluate_incidence(self): constraint_dict = self.constraints.items() iindex = 0 jindex = 0 - nrSupply = self.incidence.shape[1] + nrSupply = self.supply.shape[0] nrDemand = self.incidence.shape[0] for i in range(len(self.supply)): if iindex < nrSupply: for j in range(len(self.demand)): #Check if element type is right if (self.supply.iloc[i, 1] != self.demand.iloc[j, 1]): - bool_array[i][j] = False + bool_array[j][i] = False + print([j],[i]) #Check if material type is right elif (self.supply.iloc[i, 2] != self.demand.iloc[j, 2]): - bool_array[i][j] = False + bool_array[j][i] = False + print([j],[i]) #Check if the constraints are right for the type of element else: #If the elements are linear @@ -211,19 +301,32 @@ def evaluate_incidence(self): supply_array = self.supply[param].to_list() demand_array = self.demand[param].to_list() if eval(f"supply_array[i] {compare} demand_array[j]"): - bool_array[i][j] = True + print(param) + print(f"supply_array[i] {compare} demand_array[j]") + print([j],[i]) + bool_array[j][i] = True + else: - bool_array[i][j] = False + bool_array[j][i] = False + print(param) + print(f"supply_array[i] {compare} demand_array[j]") + print([j],[i]) break #If the elements are 2D - elif (self.supply.iloc[i, 1] == "IfcWindow" or self.supply.iloc[i, 1] == "IfcDoor"): + elif (self.supply.iloc[i, 1] == "IfcWindow" or self.supply.iloc[i, 1] == "IfcDoor" or self.supply.iloc[i, 1] == "IfcWall"): for param, compare in self.constraints2D.items(): supply_array = self.supply[param].to_list() demand_array = self.demand[param].to_list() if eval(f"supply_array[i] {compare} demand_array[j]"): - bool_array[i][j] = True + print(param) + print(f"supply_array[i] {compare} demand_array[j]") + print([j],[i]) + bool_array[j][i] = True else: - bool_array[i][j] = False + print(param) + print(f"supply_array[i] {compare} demand_array[j]") + print([j],[i]) + bool_array[j][i] = False break #If the elements are 3D elif (self.supply.iloc[i, 1] == "IfcSlab"): @@ -232,15 +335,21 @@ def evaluate_incidence(self): demand_array = self.demand[param].to_list() if eval(f"supply_array[i] {compare} demand_array[j]"): - bool_array[i][j] = True + print(param) + print(f"supply_array[i] {compare} demand_array[j]") + print([j][i]) + bool_array[j][i] = True else: - bool_array[i][j] = False + print(param) + print(f"supply_array[i] {compare} demand_array[j]") + print([j][i]) + bool_array[j][i] = False break iindex += 1 return pd.DataFrame(bool_array, columns= self.incidence.columns, index= self.incidence.index) - + """ def evaluate_column(self, supply_val, parameter, compare, current_bool): """Evaluates a column in the incidence matrix according to the constraints @@ -248,7 +357,36 @@ def evaluate_column(self, supply_val, parameter, compare, current_bool): demand_array = self.demand[parameter].to_numpy(dtype = float) # array of demand parameters to evaluate. compare_array = ne.evaluate(f"{supply_val} {compare} demand_array") return ne.evaluate("current_bool & compare_array") + + """ + + def evaluate_weights(self): + Return matrix of weights for elements in the incidence matrix. The lower the weight the better. + start = time.time() + weights = np.full(self.incidence.shape, np.nan) + weights_transport = np.full(self.incidence.shape, np.nan) + el_locs0 = np.where(self.incidence) # tuple of rows and columns positions, as a list + el_locs = np.transpose(el_locs0) # array of row-column pairs where incidence matrix is true. + # create a new dataframe with values from supply, except for the Length, which is from demand set (cut supply) + eval_df = self.supply.iloc[el_locs0[1]].reset_index(drop=True) + + if tuple(self.demand['Element'].tolist()) in self.constants["element_linear"] or tuple(self.demand['Element'].tolist()) in self.constants["element_3d"]: + eval_df['Length'] = self.demand.iloc[el_locs0[0]]['Length'].reset_index(drop=True) + eval_scores = self.demand.eval(self.score_function_string) + else: + eval_df['Area'] = self.demand.iloc[el_locs0[0]]['Area'].reset_index(drop=True) + eval_scores = self.demand.eval(self.score_function_string_2d) + eval_score = eval_scores[0] + eval_score_transport = eval_scores[1] + weights[el_locs0[0], el_locs0[1]] = eval_score + weights_transport[el_locs0[0], el_locs0[1]] = eval_score_transport + end = time.time() + logging.info("Weight evaluation of incidence matrix: %s sec", round(end - start, 3)) + return pd.DataFrame(weights, index = self.incidence.index, columns = self.incidence.columns) ,pd.DataFrame(weights_transport, index = self.incidence.index, columns = self.incidence.columns) + + + """ def evaluate_weights(self): """Return matrix of weights for elements in the incidence matrix. The lower the weight the better.""" start = time.time() @@ -259,6 +397,7 @@ def evaluate_weights(self): # create a new dataframe with values from supply, except for the Length, which is from demand set (cut supply) eval_df = self.supply.iloc[el_locs0[1]].reset_index(drop=True) eval_df['Length'] = self.demand.iloc[el_locs0[0]]['Length'].reset_index(drop=True) + eval_scores = self.demand.eval(self.score_function_string) eval_scores = eval_df.eval(self.score_function_string) eval_score = eval_scores[0] eval_score_transport = eval_scores[1] @@ -268,7 +407,6 @@ def evaluate_weights(self): logging.info("Weight evaluation of incidence matrix: %s sec", round(end - start, 3)) return pd.DataFrame(weights, index = self.incidence.index, columns = self.incidence.columns) ,pd.DataFrame(weights_transport, index = self.incidence.index, columns = self.incidence.columns) - def add_pair(self, demand_id, supply_id): """Execute matrix matching""" # add to match_map: diff --git a/TestCases/Data/CSV/DEMAND_DATAFRAME_SVERRE.xlsx b/TestCases/Data/CSV/DEMAND_DATAFRAME_SVERRE.xlsx deleted file mode 100644 index 6e3a4b7f376fadb1573c6ab8b21a7c5c4a3cf807..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15304 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 diff --git a/TestCases/Data/CSV/DEMAND_TEST_FILL_CLOSEST.xlsx b/TestCases/Data/CSV/DEMAND_TEST_FILL_CLOSEST.xlsx deleted file mode 100644 index aa74e91e533419e70275a9d76f8d9ea7d5681c13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14815 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 be-CwXlA!N4004Y^KMUW@i0GY&1pxdX^V@c; diff --git a/TestCases/Data/CSV/Demand_homemade.xlsx b/TestCases/Data/CSV/Demand_homemade.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c791755eb687cc67ac05c5325895059342b44cf3 GIT binary patch literal 10942 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 literal 0 HcmV?d00001 diff --git a/TestCases/Data/CSV/Results/pairs.xlsx b/TestCases/Data/CSV/Results/pairs.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7d317e02286dd3b8d1a40f217347dfeb4ed5269e GIT binary patch literal 5153 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 literal 0 HcmV?d00001 diff --git a/TestCases/Data/CSV/Results/test_demand_IFS_result1.xlsx b/TestCases/Data/CSV/Results/test_demand_IFS_result1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0889811e9f1c8a9c912cccd8da7da1206f784c29 GIT binary patch literal 7389 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 N61NpR^mmm3{13~Rl;r>b literal 0 HcmV?d00001 diff --git a/TestCases/Data/CSV/Results/test_supply_IFC_result1.xlsx b/TestCases/Data/CSV/Results/test_supply_IFC_result1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..39b8554d40a9407b28a8f4a80e91e83e31dd551d GIT binary patch literal 9377 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 IrhotTAHS$o=>Px# diff --git a/TestCases/Data/CSV/Supply_homemade.xlsx b/TestCases/Data/CSV/Supply_homemade.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6a6705e7dcec5d191d8fca44b334d2381f560994 GIT binary patch literal 13425 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 literal 0 HcmV?d00001 diff --git a/TestCases/Data/CSV/basic_study_demand.csv b/TestCases/Data/CSV/basic_study_demand.csv deleted file mode 100644 index 491d743f..00000000 --- a/TestCases/Data/CSV/basic_study_demand.csv +++ /dev/null @@ -1,11 +0,0 @@ -,Length,Area,Moment of Inertia,Material,Manufacturer,Latitude,Longitude -0,1.71,0.2925330207236583,0.0071312973511423565,Timber,0,0,0 -1,9.97,0.21529626993272144,0.003862706987245271,Timber,0,0,0 -2,2.17,0.00164,5.41e-06,Steel,0,0,0 -3,7.26,0.00201,8.69e-06,Steel,0,0,0 -4,2.1,0.21469647897990823,0.0038412148405308484,Timber,0,0,0 -5,1.01,0.25682546745733664,0.00549661006122329,Timber,0,0,0 -6,9.42,0.1610644146760936,0.0021618121395793857,Timber,0,0,0 -7,1.15,0.2528931772898338,0.005329579926645608,Timber,0,0,0 -8,3.04,0.15339866877720243,0.0019609292985514884,Timber,0,0,0 -9,5.25,0.00103,1.71e-06,Steel,0,0,0 diff --git a/TestCases/Data/CSV/basic_study_supply.csv b/TestCases/Data/CSV/basic_study_supply.csv deleted file mode 100644 index 0585ce3c..00000000 --- a/TestCases/Data/CSV/basic_study_supply.csv +++ /dev/null @@ -1,11 +0,0 @@ -,Length,Area,Moment of Inertia,Material,Location,Latitude,Longitude -0,9.28,0.00334,2.77e-05,Steel,Gjovik,60.8941,10.5001 -1,8.19,0.1893479330549463,0.0029877199793483683,Timber,Storlien,63.3160,12.1018 -2,9.33,0.2304234887844403,0.004424582015299424,Timber,Storlien,63.3160,12.1018 -3,8.3,0.29273287747622845,0.007141044796292715,Timber,Tiller,63.3604,10.4008 -4,1.39,0.2871966376449907,0.006873492389549007,Timber,Gjovik,60.8941,10.5001 -5,2.82,0.1693910127884734,0.0023911096011253966,Timber,Orkanger,63.3000,9.8468 -6,3.3,0.00334,2.77e-05,Steel,Gjovik,60.8941,10.5001 -7,7.83,0.16110170464648693,0.002162813270000326,Timber,Gjovik,60.8941,10.5001 -8,9.65,0.25253643604463827,0.005314554294177307,Timber,Tiller,63.3604,10.4008 -9,3.54,0.00239,1.32e-05,Steel,Orkanger,63.3000,9.8468 diff --git a/TestCases/Data/CSV/bool_array.xlsx b/TestCases/Data/CSV/bool_array.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f7c8a66ca0c7eedfefb62bef3e5f6d10defaa69b GIT binary patch literal 6561 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�r%DaB_UFJS?VrR? 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

`&w<^*I73qy;nHT z`@U$C2HsEK4)D4C*P{)C*Q55spu4UAuNAq+Coq`Gl_XMw$B9hqPe}IRIeIUKU!gEB zm0&zvg@<4+b9ByNbeE{?E3iPUUpXZhO~PO8Y8VAtfAKFLR}f(wl{;#&gKnAHLhVIg zUTXf9b3B9{H=rYco|CB!vR+N8dszw#ELUJF>h=;l=q8h%0T*s>t+-qgP7qzs@v^`? z;M;r56Vnf1H~xCT4!cPC0xRcYcUxNQfDwDYBl!%5N07Y6`t}7?z2h8C@)z?(8D2+4 zUW?zmd_1!G)Nxh&!F~}f-u~O91CNuw-(_WtlRNyT==wc`kuI7!cO_eF4@Pl;avNw* zUV*o+qGpTA>6Hd=|4t$6B9`vn2x7oEZ27AjS}?_6YhU|UcjVJ`P4D%y1OGR%t9q^j z-2dnh`i>^LFQqGChG%c30)QKzdQo_Ok~?OSsJjKDJG3LXJU!hre{7pY$jJUodu}!2 z^;{p!&|8y4p3&Q)um3m1&%QP~UXixlJ_;r{+3NT1#nr(pN*ghD#-P}X@gc!PQwoSg z5kWisDCCf@n&_~snn-l6`f=_zOVMA5-)m=MD61W$#0o=}C( zupk|rI{Y-m+VebrsSnxHwC_P*lc1brZL)#jdEj=xL-z2Sci(8^pZiLARUT$sOVq%@ zRPX)EJGT_N%9&iC;U0*tema|LMpL%!q)|RT|7jEB4-ne3-h!6K(1_AKv<}gOjumBH zm!M6S)2(mQ%!*s;-QStVLb|fX#q2IpIo{y>Jel|hTmjrO;-5;_8B0~$WZ$8oNtso! zT%n9=gdUag#9_}fi|jU%rwrc76Vty3z~CpAlv|Ov4pp$AURalAhB2*;x}HtlutaDY zy|!gR;^}6PQD=BICc18NP7;@c7?MKOBj3g?F?;j1lKP7Fecez z0O8I4@B6-^_N7t0xECdukaioy+1MrbpVR?(-t(zbp=@?PQ4o5+F>1<_WlH*mr3*&=BJBN)hojUfBsly5kZ>toot7S zwE%d^fXf#l^G-|BQ4lOD!6`3u$E06yof#8fp5{FVPN3H2py+j<{iCn3AG#1(Api2x ze6u+XuR;f-;4o0}zc~!943+$steX7Z`A5jWt3(T{XG~~=Ow#(@j}P2}Ao2G_F+pUR zJ;8w?YO=1Bj$!DCwdc1E_M?72>@{Yv`0=w|U7Y^Co!w2uEgf)MD;O z`r=Mb6^A^REUan`A@WGWQ*(OHEeT>x;tiZ0olv1HhJ9@e%^bG932Dv%gS<_{QPQb} zE#udK$h4t$%{K$W3psXa?xWb?I?NIIWkS20u~3m{cZ|=!FjpR$moqN14ouPya=lY3 zvUryDD(dh1j8&fdc5@1N7~V!gQj4R&5u}dZlAoZ%@C^h0ops_Vq0}(@HJR#x@kmGQ z>xgi({b_60fXkVhe*QvUaPIx&|8$<-d#UB>pZ9SIu9EVqQj@ebe~>z_T{Ffl(zd7l z{&Tq_KI?3N6_N*X+Y!(#xJif4OKE(B?Z{{>N9f@D;9sc4F- zIp3sZLHz^Zs-u=kX&Ak!YN!v(UJBZaj#y+0`%TldKkh|p_r}T=jL&zRPkwQgHA560 zO|=S{eMLt9#*2%UMTXEEmJtfsi&9x2opL1IG^%D19en{nt#`rm*{=5Q`dBL3OWoRky9VB7Ii&Qk?Xlc*5aAtmf(VZ&NYzyEn|?Qv zZp|b7BvZCQLhYS^K!}XIW%$7EGw2%(8+gD`m7UPbC&=v})$P>W%4M+`MB*gaT{awN zO^ud=sbeLdPqh&Lnl!>vusc8`hNTc8iYobE&TyP2L3pvM?Pr~0+c_|v%kDnL zj_D-kjD0C~OQa}=2Hwh*T!)RKRjV%?(muDAI;Cjf{v5JdL_)?>MsjlZZ_mc-SB&RW zUq!?}YuF(vh{HRtv+~Zs%v>N`XJ6C0pjR{Y zS|Z?zpRvG@8MC?&5zdo$8YIwdg;) z7G6;%!t2<$p@5HgXVuy@$YqTLKGdgs(*MWPo5w@_z3=0;2t^?Z*)j}5Bq5BY$RJx1 zi6YsOC9==tg+y6mtjUm2*+nSLlx=J^mPo>69odGlj4?BO&-DI%et$gwJCEn%%z2)3 z-`92B*L`NcwJ>B4c`33;`^E|m#d97d2752p_DthF$hY<*01=KL9xK4?v3Dp|Cy zOgvSj*N3@A(6uT|hwOIiJ}Kk)EOJJ6#LHS}j}kS+j2?R53QQF=@o6}|Wp@S}~I+qMRg-HQW zCJoW3N)r%GzWi5#9C?7+;qZX5;PpZ~g<6L@6STX-m3yP5aaOo$@WE3U;LG7+a{cw9 zASsK>q1Hcl?zpI9kS?PR#$8_O(qp4@6hTV6qEI3Qs6jz6yuZ4+YX6w!fSO zVoZOly-xiOdke1MQjm5>q*uM1ND{@REfSGQ1K+7%o%6C6#jfS{-4iE-dLKj?9pIT^ zZ((A?m@up;RJE6u6=U>w(l?j{nV=E5_nPa`V|OyucU&H}w|IoOzS(SEVp%Qn%(doo zpwtfJSwklxlUJ!GpP3@nW%O5hHLmQzimAC0J*(#U)n>!8NTdN}^nFg3OBRJ7UzgoW zJ1yu~7$>RGO3eQ30@KM`^Ym(U9>*IhWyHR}BT_Z^-dsy6Y9ZX+%*&}(R%7hCx^)x3 z=y)VIWvb|)q(j8!jHh1PtJkzY%DEsm^$GC(k%$n^1(I3r0a3qPh&6^^l)%+Znd+u^ zV{WdvJ$T@&?&<l28IyGKp$a4Rir`&4OJ>Lqgh% zr#2^`Sz^?99*#MdwOXRyO90Fm3_uK?%Wm`Ctr^I3g-&yU zkbSKiEIPI|I>^76t-PE1e0Ofl;f%DtLkvCW(N6z+ag7AxR_%a}7j%~EFgZ4kzJK|` z&@4RYq$BBaXZVho=YFJ*dU459mMKkXj4h zNa&WHeUN#O+RaMsFAl+_tv9Uh#IGw)s9mDVO6wzqmOqBvS+(62e_tlxpgQv1+youu zd{gUZ?{LT0t^SRqw8@)b6H4DHwLn8kt>lM@#OI9Bpb3I>IjLmVgclg! zh`so;l4jS3M)|lPpEvEbBU{T!~VyR*XAiS9gJh^n^W?)#jhQ2>xH1pXVYE9-vFRA42Ca)cne;? zB$Bw*+r10X6M}`O*gM{R@%hf)7!53o^=XlH#ybqq%c09`(W0LWij!~hbTDM5^s!5S zK87HZFskNx#ouh*_~u%UP(h`8N^B>{;@{+7CYV%y2gm=r2oLqre^H3mB`}@RA1FHu zz1PiJt~>poa-`7Z7rRvXx)LNRUx&dkKv^{_Lb=NJsLIb}%g-hJn!e{9g8K~rVtc&4 zJXY=g5ia)*=Fymc7Ah|(TB&WUfW3@zz0#wK_uPj2C{*v)3OoP(wN^IHraCUwW**1_ z+lCGkc`~?WlOS=DuuR$TzcTT2hh`^=SrOKaI#iMua2j@Do`0GuJDf)%b7p z^wulS3rrP_cQ~+lnj6jV)%5b%^&+BQwm@F}O*jxrY_IiD?5893sZIAM(68t};$P5g zCiEBIxp=C*eKtOP_nBDx-3pz{k`bt2aH4M(4&oOMROgRD192uh zQLpk+79V6fFP5`!77@?gYXo67U*&V z1923;9*?yVniJLU#nA(o#=_I^u=k(tpY;2@J-iySt&4ki+Vf>~hmcUOaRl}q=|46- z5(?~+5`*IBwu&WmMH_^k0=CYdG;=WI$ECDDhVa4oj$k-=bxCNA-Zs=Q(B*w9Q~Ro~ z78v^}xU#gdM2l9kucSF9<#Q4sv@_b@g?i7?m~Wo`bXSu0Lv$Zq^(!@VIw~^&Q=sLl z5Kcr#Pu;d^D3S2|v$=mesA;9cp8UZfx@LjK#E>m~sX~j`O z@`S4&47oV9hy&?;Y@AoLp;<&jl<1Ny5S{U)fWHpBokjioxbM?bRdY(~rl~Lsz9n6U z?huUj6N!k)BM0&{F2%*6l zAW>3afWBr`IB?xc^Z->ZChCGAro=RBbBp)$?w{yWO#wnJY6cFWSDOqcZM^wjB^3M& zUKh~Q5FLvDHxy|B#kC0n)}@Z-K>p}OnQh7Qt74aS<)rnH zQ{WKa*|G20i_;>Rmz4+8Y-rnI`sW{c^chn6i|;0f5+y_{9gWv9W?^`w#?Q)A_NA4Q zx15kyFFznW58zz*{W9`C3u{oC{^lFj|K3y|SU9j{$@;2-AUonOztkwdR90)?&G_L^ zcdqulyHNG&hk)3o--F^mKshs-IIQH33-wk}g0^4lqWFN!`^IxWY2(upZ7g%Y`*#4cdJ@hV~rd^!Ivw!AqTYKrn zsZTp@ue9EP1A664xZJghNu#vj5(YnzZ04?zan4Ohz&SvuW}F}ZQ` zFN*T1oyM4D?CF+aVVU`#`tUlR)-r9*ul#v%?BJ7FN|C9hpehLn{FYEsXd;Em6EvX% zS1})=={pa6SNfxGk@8ceSDUf=C3?XocKWjy5SI*#S_qIyBD%z-aTS@gcGifyyyvHL zqzHzwIE+#xDuvs=V@9kWZ^EQOjI}9BBS5-{+2GIJQ?8=a-3Zk)Dz~^ZP7xEjrylb< zbc?A>7;g6$Z@Ek^Z50lTMcUMm1V%SlXG4}2qF}51NjQXUP-eI^wA2y=PGaUn%tn9l zvWPMIgX^K>4~*$6i5T;X1glq|XJXHyTqLo$&8f{DS(wn zOz1eRIf!J9h<@-XOjC`W`ZyjNm^m7Im}>|eg_RzmT8#e~F*_L- z8kmr{3IcdqLhNdhse)R6S>|!C`pg_dR^;VJcq;+0KRWNs^_X<4{UouV&mwcgw{gx8 z3a*WHXS7&0i6R#b_yf-zO?q7qwjBac0jfT)R41}Rdf8L{d*PWNhfuj@!^vE6z7Y^1 z$j0bvR3MF06&Crqx2PdP;Go&nqMQz$TG5_6M8Dq)5Xx({mm`vVKX4Kd@0PNyqJcaO z)Mf%e1p?au&J?0@O!^)WE}eWD@U8dHYgM*G4&5wg#a}b=Op7alSuy(G=r2+KxsRHgEkY#SdU}mdwNwSUs5@Bu(~$c-y1DGz@!&3M$zDxNr97Q0YZL><(pnK zFe+;Wr`f$?gb(gTIe!vCIK2&I?UTvxGH~F6I?val56?j7W@?6@0HA5!cZ94 z)AdHy-Pm@BQD|snTr-~zO^wbG$Hlo;s&=-s()x=J-72&a`(jY+$8uI-$trP+*u9%k z7q` zyD6XJUKXjXEIc>{RpRTz6@ThhHf{ETZ-HgJ%Y7$G*<5PocU_#!9_k3P;0X+UevwkoX1o1TMw@RBzL3zZ+y=j& zmXJAQ2&O(PLc)Nfw#4hfP^jJ0bws9^Mth%SD6uyDI79skmfU!hsCZ(#j2*1u)5K6$ z5H8h<-oPL~(DI9Tsx|$Gjj-69hJ#2aA((ciS;1q+b2q3*>pBRon!i51=TH8i86Nm& zfBOBt;S>B<+J5jIGu~+BmynT64TT4E`Wfw>Tw}<5U-jaP!drOrU{Cyw+?m7i0gJ=(jD?EN@$L0T%Sl5PxncpD%JwrQ<5sg^zldqai{A@##g47L+V ztl*GdxiOEKX-bJE&xPG5waq?R=FhyijeSL$p8Dj?PeZBympr0w>t(@FZxz*ny?;`9 zgV!#iI{e3p!SI)RcK4wh35KUP!0V@Hes|*Z&*|^`iNWIGGpE*~ryY)i*UwvA_Wj&l z`?x-6(<>PrWEXYXbpg!(DL=U-w0pEHxO>!VG2PBfLznGuwdgIBtCzkW_AI3~x5{Lv9-uqP+*UQIzbWMcnI$LQ8JT<+P zmQ+2bl9-lid(kdhC;Y6pHOC(-x*vXNgrP8KMM$-*c4=-vT|(44cZR+B8>f3kkY5HNAsK*007%%;a%aVEa$*8Qmh3mcVVOCtk?KhDgw_6U#{ z+u{nZ^DRp%h6@Rwd=0qOPe3}s(^;it`y*9gaYJ+QV~B>LT1Eair6qF!e>1C0{NYV! zNa)RhuK?Mso!a!KA57LnJOd4Yag_CT+D?>q^`;QHZ;9(e9*3HXN zpD3ecQ>QdU*VSxGQw4@_8Glc8kdBkg5NP+Kv$G&AX3Xf;iVyDFM~eu_4;iCHQTtt+ zz&nA;(J!!&L|aJiK3)~ROZp_OAM2+58u`YcRLejjqQ0ZI*$=S6j;C%>s5ANn$0gCf zx23a=!(D6~OGqu#a|-9hc`qCqtgUe!2px!#fOxn(+SBuJ(Ok1sFpklO8%SCerrzVi zwx_$ltSwWla?iq%`7)m=@)ZF3b@t)vn0s;U*(<2O8SR_vcXl_UlvU#yKZr(YM?1rv zNN+#f0lDx*hIjzK9z3|v>M0+nhZ|4nn*~T(HCY{6jdVO5w4~HPJHm-mK!{1SHB!Nu zX`N|_;1@ghUyRAAud+Nev;P>utq8Xotm6J5-z{;qhK<@{u*i48BH!(1#!d~^{<3qd z{a(Io0v-(6T7-@xYz~*C3BN*{BdOy_@&!(#nSq((nGmi85S5P*Z%5zL;EZ!aq@O`c zx&Q&=Z_jolxS#HOxh*crC6bQ1@em78G6T*BYHN+&5Do7kK&dR11UneAQ~Lff)i+F` zceAt{KE&m32{yM-t!=U)qOJbH`pCeQ*Ku z9z?i&P%@%iNAT&NfjYbF8ZmqMW@E}}ud^yG71{|BL%P_)sGh(~?ND-w;*1n>AzYa@ z`4ZG*GZ_|dVdg*Zcp&1WaL9I~2l*8Z+nkjg2U+4nw=<-%`xkT7Wx-K2V@v)Z+l|_K z-@Z#P{sh88&TKT7tA+dav7<$n-v`oVogwmO50B_?x1^pfvJ!JNDh|AptMJE@du@Yz zhZ=qdn;CyvyPDkSW&1|ySN#jTeNZKy?+f^qHZ6}pZo63Y2o3o{#I1oP$909D>-fCg z;##PqYJ})npZ0L0FN4BIc)48vYkNUpXcOewaRdQ>8!+n2#?BNGlk%!;jR<|!KxEI9 zGrGLJ8S&5nut(mXy=n|f{E~+lp+3N-1}`v56kL7~EoWA(WO{ey)Us;I_nfPC7VjW( zd{qe&eiLMgZwV$dA1~GFn_tJfrhQ}*Y6j{@#EatWdXkOSr$6^}^6>VBSz4g1?ebHZ zXu31%<=hDE^5mYS;#WV01V<1Y%IzbaE@4VG$Zcig>Yh`a;os9wTBPdrh;FxTl6*&d z?_<0V7c=EI;%`U5PJFNXDskEJmaFmEn$nejJcvEG^^0|@zxbIm013^&>ouFMFzlJQ zNWDK2veea8vN=F0z8%Q8v=sif%Pz(Ina2g#g+hr)6e|4Jccj&cuB{I!1)=4q9NR68 zAAw%iF;eIF;K|u#((`zfLTTz+GyHMaG)v^dz=y;lo8NMeO=dI$i@aQA>+$kq*+lzD zzvc4Zp1;n2I#<9hDVLB5l%O70aW4RF-?BwJy#vCLJ#^23lvLuJemkP8GR7l1XOW z=?5hLj^A(orDeFoS zp9ogwVV5GF%51R>FyJ6ZEhh0snp z2YriU4;~YBPLTGl(b{L+s*cy;v;B~XzC-ucYaJ-~knGbX;6rl8*&;Hb*aDO*8YM}a zMjh!HM0c@++wa7bKTGNWu!@4HBTK7EI9 z%#F|#YSOW31`_uhtu%1l-gA&!vLIR3;QtAmoZWWp}O2p7QPLd#kZccrEX_$zUNMVF@lX2MZoBYRQ7C9`QFrnMh;I zj<{Mq@yEZ|64opkr@YtJKIy*F`uYn`lKv^Xgmo( zmDN#%lS|;JNXv3H2_KfT_Og7oq+EOLWCW^&celQTS2Wq&;ooq7dF=V5v8Pvrzt$ri zo-CW}oL*0U-u&@f$6>Oj!-GQIP3X+Ag`rNRelM|V4fuxTt8j!a`D2Kzu99kGt~ViI zJl>AF@_PbEFav=BdYfM7I7J&o*^@^^ji)eX0r=`&%>9#z_+5sX_v<6(f+PX&{MC*g z5X|TN`93mJR?7tnu(h4&*|v0}J*3Pe0=sSyM7*Mc>c(ID|fKHXJ{3pAXc~ ze)4@W2U_Yf3v}*$BAE&Y%ETCyc!^r>$j2+sMGyn(-hEaJ6oDx+F3NDKx!!1ZIYX#_ zV$kCU|~}1{bLPEwvsv>UyI|YWlaZ3Vg>>CJLbfR^@eR zh1aHTWa1J@JKlHWg?DyAIg7c@LCMHTTt88++9!@3`m47f2+fzLFsj|I zV;LSi%Y(5HvnIGj`s$y^!TcJKep*RFWgvXsh&e(RBi(f+Rl@+A~3Wmp1l$S^2c+G9B^~z{$*BvWZJ*4cGt~ zXBLL!m{zs8kR$al-QS%A)tWRWs04|Q1c~TpCc2K$ z#A)gd1uP7!gkS1alatz8nsG*MA1|hs&vwH@Yc6cIaJKiZ_In*V=s{7by@10o`M~zy zPnn{D8TZCcWt^2N<=trJ;b{N5+Fxufv+0cjfEm7w8vk^0HR>2hST83V2O`X+RaFwj zH(?g{PlN=d;iS8I8cs{Pm#8X5y4Br4{fM)TxKTd3YxZ;N=TV7gtEH;TUGsID>SdoDCk< z>5>B7;La#8k%G8-rD&IlOTW)s6sW1)e2KFsPoEQ)1wi8ODzAT^Z?!UwAKA|+r+k+c)hzi27uXKTK9(1f=P0w%G7$c>e(12|g!KiwPIEW?t_aa_d%OT~#V8Sd!I0 z*34-2G}fw3WWdCq05bD@eRUX=TDq)zBn9SDGss*A$eaE;x$cfOqQuZ}prLRC=dTVzKqpm>g;u~?kS+ICIF0;T& z9}Fe)b5n7N^jMj2TKC%#jhUXft0_N!gPpw|Uw$#_1mAb?4O!QMfK^+JrH5)fO%Dv( z3&RAv;@)}C?6;iUk9MAE+q|vkz#0`80EimSsnF)a2;hJ2%CZ0Lr5Pae3t{u8>{>C> zvLEUswS^>FPnH@}oe%8%t7|E{9NBE>Sn}wdtO>L1q1sJHArc0_hj}$yaN{F3^GSw( z1`t(jotg|!D-Rjc`-?Af?ba^h$Rg(#{PsCKZy@n!-S5_;gsTM1 zdxM#IuokTKGFa<}xkB4z9JGx%26gqdNHcuslp9$n^(a@Qs23p%Z_! zQzclHO7#B??^fv{`7KvB+es+!S_xSVjp#Xan@zJsE!dR0^_N+8fMjy)g%G)ngGyJz z0aBVn|Ma4vq$N_o1p<(jU`H?yQl|?XMh6wrJdpAoRFbyrS|j$9C%}(fvR^D{I&IB; z>X`T3?)E|b^Iaj60K62>J*BMb0+%K)gsyOOPnR31Px^iXdqGL}L1m7DF!*Dw9P#Sg z;!7Rp`eFd$oZ`{&X<|z@an2Q5F5}qV;Gj|IqXXtYqjsROPnYO4aIM>FD$0rhD0_w0q3N$lK+;(c6d%UPHL&kk znQlD*=0!F_^#Zy!Tw>V2sItGWUYH<3J)8-S^2tYYXK7$OYoKmY!aoJ8I7~ZO^hnG~ z>P?_{JU7bld-cenN(jqJ1^vKls&p%Ef`6;8tSxEVD_u>XRzvwa6)w2Z9x_L5& zCP1;@aYs#hW-30L3)?GVv!NEO)|!?peV?I@dQ~cAa9(;u>yxx?24WXY`|&jjYqn0x zMzo}ysiy*8W?0rVkUXsOLjjk~Q`}!s`Mk9uYm>+}*JRJ888zJB#rD_TzAy;GH?N^7{!FpCs+H|^~G@?8}v7f?s` z8~)E^>D?u&K0FHlcjaTqzFmdui%hw*!{kA|miIcIOgw(t>H8l^#Un?!Fvh8aoW|%8P7sz4rwC0I$E~ej+!-x!tV492s^lDvm+=8V*)**!$qCYTo zuFqAMnXksf0$T1*6tCo!XU$>|-1C8qSy1MGcm2vFQ$|f934)Ez+k>RF>&wH}%w)n4 zlD$k-amDk%>(UXLTxK}NcoWrT0faoebmm-sP5-Cw_Y~ln8_tQgQRz_q0wHw4g)R5a zV|(iRdcz&)7GNZq6|54V%4$P_h?S;Ac;9B?ei_;&&pkWDO-@t~-SxgL?LNl!O!yqx z^F9FXKUJ#Ie^$-1gfE0IeJV5q&%j71q-V{{Z6{bg$}Mu!1N%_06LHp!r$aXSlNtW- zv}QoiAMjg$Ml1~ZfcWVf{YnEZn@23}U?P-GD=X;=8Fa)mJ+y1E-kg@}X;TssM2(K- z^ZyIvzLjMc(Xy|IKM`Odf9$I7BBb7RXu5xs*OlvBEF8Jv(nw<}b+ZH44~U+-2E?p# z*`!S~qX@*$m5?O~CC9vd%*1{3K6w^Nx$~8G9+MW4mk1p=iksf{TeA&#T*#px@r*mGC=k60PxL9eYB+aRO24To1P@+3Q z|1hu~JWdSk+s{wKWlv+_GhXAQLBwA^H z0aGW%7bUmkqwE6 z12&k~{T0LaAU7 z%H{GH(Nn=wzQbkW_eCFMws_~C90$;;K+As!Y{&xZMZCZkF=O{^3Ax#g@cW*7mUY>g zr0!=^b8@-mvvS%OtR*8+J*23g5@MB^Xyy+^@56zje@J<0Z_Ssmcd~9YIrjs(nJ3tt zSs7Ed%qLCUE>^RIE_ed#&IAQ~pOZm(%9+}cseW^hYJzh$!PwcvSP*Nw1xY3VIc>xV zAhHg^&~a#aUieL@a0^UeM@#Yxm~9kKJVWLyLjN{a*J>`c z!2HDp-6j8s54Spkp+F!LuFwKoWRlaZ|MlT^&{=jw2}OQ-k=halri*;rmBoO0>d2nMUD|hL0Vv2w%C)b6`(~6{#JA)r~>ctG8k2!qo5#qTNT7=9zY-D_2QM<04Pw~|$7T4Q-DnFyE(w7i{ zg@A0Tt-k_i)7@wQbJ+_oe-o_7N+3RP%4gvLqgpY)U$s;ZjHS&?-vSWCLG>VIY;h~d z4&%M`D!^5?NmYJ4o5)28A@F~=@Dv69V5MPyJ2vuu+KbxhKR`RIq)+m%77bjdD*Q9! zbhm&!I9ef;qx~)V<>c;j-V^SxqN>=+b7Da?;hfau5HPVBa>)AGz!zbcFQ(LVb&?VCdApI z9#lA8#p{8LrU7hbmPX)zFBMiq61SRixHlGFkC()P91H08-{feBt>Zp_EA_R{tLQ2LZ>)|N_?+-V8r~32 zQ9nqj?O3(I%Eq;=e|Zh&Sv9TRCbK8HGufBWeLK6)J}BGyBxs|pW?e_b0`c{cbxXCt z|SJ9GX3O0cS(oT%ml23E=|pa9y$n7G@#MUl$eDONpQkJ@D zThv^HMD4fwfxkx zi?=dP-&F8n`ck79W1NMI`wEmoW&iJ<8#MzTTF$}uEM@j1(vgwr`+M6E)tfI@T98w1 zvo)?Wip{RReA~b`BG+Hm!NFu-I|NyJwfx@s?dvXYrIQ=-R!-H3I|4S~?$)|L{{^`m zUVXN|Y#8)YkK~$|vRI0;)<59rhgRaY*ez&SVgJ(cc=noa^=){2G9U86GnPW4pB%g8 zm<8A%XLC)~v1U7XWGl0#@EU#e+Hc*Z)^GOg@nN&7OFV!;lxWMb_7{tT|6^MDqNO3q z|LnZZL9aon!k4j+IwiiF7gdiDBE>%QoZ9c?Vx86p-T>N}Z)yi0NmPo(nlK;t^CJt; zLbGBPObBv9=VQ`0bqC2TO<%sfWMHLSSG=p!Nf4)l9ax?d8VRbz<;Uaq<-Wr9lYzYC zooXto{3E*KdP+QuYwvc@kow(M`}2jMYLT2AS_TH!7A+8DH;Ez`kc{Qb#nqPWYDzX| zZhcAUwyaevLOv*DT6;Kyu)<J*rDJ z-eze8GTnM=;m!B<_2g6|X{9;V7?J>C!_E{0xUD-M1UjFDBTFQyv>||iwp_DbP(QMR z+1%)8c>!kb+yR{mOv<*Ba5-`5B?9Qk?203tj00gdti=;JT8>Nb zP;dT6M;IX_Q)L7ryo)w<;lI2Qk3DmQH84f0Dqc*lsIu%4azk2+0R|$ATL09(LoW*j z)_{WKhV%}b?O`*U(Ql+flZF#85+QpL6T4n(`c`eyA2?vHyK{QbrPcId7sDrX*wW99 z99?qxO7_XXSJoWGICnG|x^z5dmYWZgi_Bs{{mgK$FbyW#MRZ62=ts@iB}~%CpSRZ` z?)zvC$g+2OB>%~rkHS*H-cpkiT1(*Anc<+XkK$Y%bN5#2m-jQ{^3*L%sZ2?XS@RYG z+AQcJ9!u&ejDpExh}bPqA~MdtYX0)n3VW9E8^xL5pQG-x@aDvB6`3+UB$|(6OlDZ_ zT8~MBa95JJNEpEp>1?l=3{x#ETLWBV~_P{IH z?`S30%a!X&G{6@!9+%I)&gH`-NX$Juu<7l2x^N(@)6KRMEikje=mdp_*MzUd1J`D05El;#cn%yYN&VsuhhamHBswQCzq){5h>B!|o$nf8 zT8~?@PXNL1kcLz5p*e=ay1r=!NFr;?4#t#A@Q`!gjBoXNk4*wqsSkD%_$`3%>i556 zeqc|5bsxYkeb|g^j;qhfkidPHNPJ<=_f=r|ON!koG6nUZA5TD}Z2#XZsPU2D78 z8{e6t!u!7~pZ^*lmu>!=W_SVPpJCB546==ur{Rf^=-LX|QGeOj!#w7OQ_HHMeZ=+X zx9$&XKqUT#D>QonE(!6|*HoZbCDN$P#o$+t*?M{@e~-TAjaR`xis}WK@|qeGnmgTX zIlpOGT-k>*_=4PzJyOU{-~a1ndTsmCh?0@sT-fR<*qqm+@Hekn=c^Z96t;x9IDq(n zP3>NNr5og;s33U1>K2oZ{w*8+0CmUT7DneE{$-cq-s(Rs;!f7vc27-*j=quQ(R31o z3=|$5$F?Fk<5x&O?QLu;Zda9TDXI`iNk27LZlYIv1jSPkWPjb>18jgPrkdcq5 zdeUQGcY0(53A%5k?b3Y+^iKfYC~4zH^u4RGWCCVbwP>*LV2kU{C*WE=b*CAz<@@ZZ z0@3N)j;T6W{fX?xi8cwpg8pW-Ws5k!VT%Zg{mVx%@d~ zPhi%XWwe?(1_!DSk{iGWG>*VjT{Z=27e5`olgeJ zj)l~?QaHJ;cE3PAjg%a&4z#i_s#7dd`ni^Qd0n3;42xh*S!*Xgh&)?8sZDw+Xp}=Y#{xF{CSL5KPa@wS@U{8G=qEcB z4qR4#o{kW@j9m)>3{O_Ka(JxG>1`(hH$7^B=u!UFb~tGJBG(qEpGp$vqDH-v`Q!JX zhDhBa7)XoNw4t8|&b)1SzQaBPirY6?91?FD1g8NTTu4vH<@w#^>7*#tMqUSP`Oj|4=|6~>vIvNnNJZC=sCY!R;wT&@jYS2j>> z*gDSTdLM}1VrQ$;#ojM`0Rpe+*@Yoda1D><-RHIl6cko~l2k||qJMb4J)4|4sPOVU zS#Qn@Nw!X;Wq{QIKKAF5wEFvpM3X0uA7DUZ5W0piTRDGNo zNq}=oq1KDrch>LFyN+Y$oARn`I`zLIJKKUD?pw!P>Wu-ZXe5+qPXp>6>EB3t5YrP{ zrSzD=vE?MSp)aLm-J_v=gNUOJ*3AJ$cmSR#vRpK94K8qiCL5y%YX-jB!3W)FP8B%1FeC$%{U_F0Rsy{nBH(Y|OtY(UuC)#S{IA|EXtIfh zGQKve`21K#ECF~i{{w~G{{R}|knbUxO;du&kr5IjuA36Xy~l3tx!?afxZSEsacDA> zsFvmGamUlbK-0=PkA^5tDRDX~JwX4Z7J9Ta`b0zZ_;{)<&(q@x;kBcn&tW-(eZI)F z_c(EDchu|K@gB07TR37CRQyxzD@v}~DVHzs62w8oIre^eRGzDcY4TL<0k&5;p}CAW za@0+rj5>DAFFyW>y)mq6hX0^H*EDv6k7?E8O%j|dvZ~zPKRhRRi7H#9i^YQ7icDI6 z&(k53*?=e+FAbQ4Mu+R}pLsMm&FqJYy$rCmfT-V*TD0-G)?f!Phm8Q`ZrevdFWX|!D4FAnPh zY;3Eq{yAD41>(EvJl#lAtn%~mc)F}1LPr{=M;P*LKy8Kgm2W$EYvvxulwar=ms%B) z=UN4aM}o)&*5r^?X$uAf=+Z`ThWmm}7tz z7WAs`j1xd+J%PP!N6)yQ{QYyiJyR*Xq&3ikz-$uwPTD9b)Jg;TL}6GX*eT!&F}kDC zUX%=Sp0f7M{`%e25ZS3;GoabCgIq9Kz4)o{iyn=V1mw34P)F&&3vIsV*rk_&-l@Uo z-~Cwn++Sh|2i-?2l8Vn2-^Xs&nwkj_8-d~lify}&GSP_ZVAX@c<=qYR$UUjm zIBj>gu?FCvhw}XZW}oTOW!UDZtzv0Ht_>gqMi| zQ;+Q%R(##Cn9`zJE5x>`OnDI7#rXA=FDd zRlGDcNK`ItT#9HF*vC?6`j@NFYKg0GV3c1-haEb2ND6)Sk?@fVG-ZwVrHXm zD(k;@a;~h2;IvpGP-OOKCn{(}peh85TEF%-&@N-0Q#*VRMhjXW4O*muro#nWHB0s; z_T=zOA}GUU1f==ztk6g z3Z^M4qNXDV9keLSKO57kve2u&YOV|)Ctwdg&G{P(L?pbcFir}L?mQvd0G{OJ2Spi= zWGvZww7H@9Hu~pp0;Zx5BwJ@+41!E?*0M^#Gq1yNzrUFCz!jGI!j|zKPad9=tU}%# z*58jB6xHh^BdWE(r`_O=E=ZMx&1uIF0fDKZU7e9tYpJJzijX+7kb2H+?-W@iiGImwFGvO%et#?Vs>9SSMKL|h zwmIr4eOyWg87KwpeiNg-WNfJW5vt$B^^z`E$gHY7*&%6`hW|y7$+X|Fd)7KoCwkiV zxI?$^^$<``g&Kn9FHnd+%ri$<4AkH62Dp^7s&y1tHR0u7E)dou~N%phcD6SiR7 z6)m|+qPQ5T-ag01tBjxWU}Vvn4d?e3{~#6yl2RytU>Z(O`3~$W#=wwiOs|Um17tw1 zo!_}QY4J1VrLp_Y2da=h_{O26zaRCh1hn7l zfa5<|BbleMoM0lh?U2N0&F24mab{3BO`&L5%i*bggg^Zo2At+GHC~DX6Y;9gCFuM00Lq|%1lMTDE)ymH zx-#pAnM1V7?BTR{0WrdRD(JLr1)a97d9k~o_m4YP4m>8m1xEh$IW3vdSHeFc3Hx~u z?!QgR-HA2_cyYZZ3QrKv2b!bO@l9_faJ7#^jfoo8EQfHV&mYx=vpRgXB5awY@-8@~ z1!8A$nzDY5sU?^^?|)+>t0AgTXVc>^Ft<@w_D>w&QSg9Wuf>WBe)uYC{4i6x+3;@H z{38Hvblew)blkz65uM5Eh>YXdm(K`2?<-K6cN3e5LW%_6y))Xn0blLOF;C~2FyX)H z|F0Sxo$&?p@)n^Wdt+|vY*llaeb4Ne+t>imK%`%=FV~tXsJPSsMiN+biy&J=#Qp$~ z_yG1pvvtYq7Q9D+|5b3v?6gLEfqn?I;5?uo=D7ic)qz@i(Y{4L4antXi)rj9)y3W6 zzguCh0KW;}nc_U^n8&_eWLn8Mve7WMAM}xMm8L*EpSbb6o0=>`-7$-Nm@j;#6O*N0 zw2O>vL5mq|g)+}td}pK{*n_->FYU=m!w8_x3Fy(@>mRsRjN?Ixp8*3JqigDyE>T~^ zQj3Vk&PcEMKH`ocaOAvXLuP|ZdcfZnr?lT4(K5<^j|+~fqTcoyWe><4XAkCD16HL% z!(!$WXt;#h{dAE*KhOh^*4H`b(@mjmKHo0s4F5cV?~OIDO6SU+hyk5qCLNzX10UfV z>s68fg_1#|J&43s&INtfjQBfc(6OY^ z#obSFj3)~xQ2wEmX2a!gAKB?e#L9YujB5a4Uw49ThH~#x{Xyl*%Zn_5YS6_!aoq8# zc(9P|+e`JsUcDjS58mAxhFt+4sMUIrB(SxS`W28Oo;{~5xOZTmK+hj^7U+3llXK{P z^ovO_Nk90bMYoKLpYL8M*;BEB`G2$Af;J8>1!+08jcnHFj)hZ#`@k;nHxvBp;j$)IO|6bUe zI?j3vPpjjM9;*Y_M0xo2bAL&bW0}ckc}6sk@@w=8tn~AKEbS}|v*4mP!wY&3;SRDe z0TYP?R@!=juX<{lR3C8?^ zDXfn*IR8}Jf@yEFY4_#fo-EB$LZtxlHy;$+rB8!>iZGd^@?;rOk~ z?ksyJI>6a^`xk<1hF#_HLr#U7#Is_?ih%pJ=rGQJCE~|U7z{*0->8L)U^+2@S2#L1 zlCaM^7id$nHPyLhk zn$s;WOAZYntJq%VxhsO_onaC6`=b5#%q@5u3nGenU&8S-8~WPsv5rnKpQ(d?4rOV8%C%*w zI~xEitTA%RQp`foOBM@nwl5?Jfa4TspYi$*Q>o4Krw{-fd^+n4A$_;t+IGiB)+Xpz zj)H3bs8tffu5~ZmZ9hu?&(H0jSs{xO;C!$Jz*^b`+|gs}7GCuy z@%h0lXG&OE2wFh@c5EM0lzVzd7}u4J`+o1OqBF!H^KT(y*(RvdoB>+TPrw;=uMmiX z+hFdBXM6NBbB8dY&17ldcnP$&_yIc!dSRVjg;lQs75qQ{v^wHtpDU!R>FamtP{rdZwEsn@>mL_I0Jto_JTzE&`hORfb|ftEj#3 zhbPM>5I?HxXG`p^zIAk}?{Edlf25WLI*N zm1JfX_m-KFE3)NgUb08@r?}@SID|%(n(hCXsUB#OV>;gacVpnX zNrP$bS>)V5%(SHiyI^E?tefA~CG-NShQjE=W~x_zsG=%FHJiXrW-VApY-JP7?@q%3 zKR^XGzDv;aXYWUDpc>70d$FyfkdpBU{VME4YF&cG>41k>LWN_g+`R~bVwOx@bxf;P z=y4lK5&+ET3?qJ>4GzeOqOiBkO2p0-6DccM(yEBG_Z=DxfYS4V>t*emz0opqd#Roo z8STM4%F(pgVJMOAicZfy&rBt>W7wv4?bzbK5RjoG7L>mP-KFr4w0NE!bXzt5he1Ya z?#iN@r}C3I`b$Gnqg8^llQvpObO`(1%LM3Gs~ zhMw_JGr_ds`ksn(41O0iZe;D&5MzUAG&|^=W^2gmpAFg_qIWKsxqn4Tn)r-<-Q#oK z-OLvWhUyn=5EgpEAB2}={t&%D$lw?akTW?<>TkaW|3M&Ds0lFM>>1x}M?axH#PNpd z*W-M6GA`l&A|fckQFEp3-1r0q`Ow>qN$2;WIG>_vSKh76;eetn5E{}RRhhoUeGH&N6;$BjsjH)=EF2gG3!{<7wtYOABAy6gi$XPS8;p1Y!x zmb;?gv}``S=I0Z1&7P1@7IuW*9}yHn;^)$v?z_2u;{0bObjqm@g1N|B%oI1sFi$e#fp+YM%wl7$$J%czxxv!|+sox4g&MdLc- zT$XRT6lz`~-(zSYs68s^pZW?(Ycl_(A~r4wmC_>8E5Y<8(AB9@%>({cYapS}c)T0w z?}rvV=bdq<%3;CuSFwH5nYit23}a}*Cz53w%)1tO$ON@-{BPYqDhAr1KPm2+fQszw zkTMZKOyV0ayJq~p1t&TlB|*uWmsFghijkT7+RxK>tnZ8E#kU;1wO2`8EgIM%&ta5t z24@nMW4^;+XYRu2XL4#-f@j@{Kx8^wt(no7{J7*B~G za?5ya9i(E3c0nmVJ*R--a7u!GO@}DBrW5-ZI(;3)hSp$$c-sgrdG-m<1PvQWi{m@j ziRQ*dLc^$wi@~yL!SKz^L5q@h%}x1549_-}=q9ZCLzMZc+bE@sXq!jHeb!3i*TOkg zftDU z!v!Uu5^yElET%vtA=7>TX%sOLP<)soPL+o0dENvme4$Hb5>BjzOtb(mf!@&Nm;W$T zUrGa=FsuWV3hi3PGy;$&ajz+7hUy7gUXP$%t`5ZLLklv|<0D^`!-$H$aR8tD<5$sB zKo6g~Al&};7uvY47huYHsCfevqHSd|dV0{`MUHgGcX}wCj(S2~@~obhq1T0an*jk} zr-1Sec-itPZ+to)V$WY>wtS+WE$=d#jYNNAID*D@m(9xh2Hc+uaDObBP}OOp6vmR( zMqx()L<*Is&KxVLRaW8VOk=fpIe5OQ(7yHNbI5wCzKm*X)GC0lUXmi;uEa_H_yqOpf1BI=YdS6WG$h)Ky^#OBWi3^I zcLc>r>n4zLW3UN7a3Xzh@S4Okhgg#I`wY!3z>D*{Kz1vo+= zEL(pTx?V{D84eH~VId__ld*#v0n&Pu{yW0X+2+;HjSgPrcc{0Z#$G6I|`e=E>XUB(H} zdjLT10iTCK=4k%8p3VW2+vmscu`k;Q$rEVF*IBrrIk$Y@yVs9&QR?tn192zCm*n>> zJrUl6>(%fBtO2akP0Jyx;MfvSiatt4llRq zpOPzl9Q5XJ=9qsAb{)UetB>9o$Z0+CmT$!|Ew|04iD3ng;>$r8_3ju>%FQ}t=XOpGT+I7!VN-6HC({X* zQIyihz+HF@`@7vaaSJ)MtAR(5CV0s)7p?gu=#(0#$~V+lL8e#yCCiUsOr+lk;Jy#g zSJcjO5DY`nrq%gz-}rKBUp23Nwm!4yy=xN4E}y*O?X5pv6OQpt z=7cUS>#n^Pd1n2OE+N!^BYcGSLiI(Sc9`{wh0br#l~M))$~+_a(Th_UAC;G8X$0Tf!`G?Q=P5inp+xFq-CAj9!*}TI!TNjo?SDRMmEJ@vV#k_iv z)iwd~Llx@IpwFzgIHUoe%|9~c560QM#%R(DftvpKQhgKtyK!II#mYLTIH@nJIutN@ zFydiS=KDg`h}l)r*%FvKeFFNJ8r;Dz=HhaoF(h9TC;brja7E zIMt0w9T{G0oD&DA>1Jew;jPFwTPA>t5(!k4NLaoIs6;H8oL#$jG|2fpAy|yuruQaw zC;LiY*_)Mt!)5h95pN&fAYd#^x7QVxqhYZ$ejRbQyZ?fy?!u=cogV6G3ujXT7B|qvvn-|@Nt9XtH*IZ`skJszZFP3GZTiHJXvwA;IuL^rF99dG)(#TIaGSfQ zjAvTVWqvL82Fb>{KI~;s%I#v**ny{`+xH!PgLIb9Uhp9Vv_lcACTAJ~q}`B6*xh80w0D}rUq+=eEOPH|&#UWk;@Q;5`{eSpE|gk!nkg{0YUU}udZ z>)=iiLE)@Huxy&+9;3!Cp3ayLd#N;Y8og+k^qV#~3+F@}akt{weW>EZ{zuzQ`W^vN zu`Ti_CUGxr?iBoIejMlebynYPX?zm!&3 z=C{aqMl-AD!f7WevR5dAwA#Ko@D(+;bpetfIK!7TymnBqVC<|DQF z$*~=lNw?Hr!O-ayTET+LEm2T(X5FppdR z$Di-Ofv&3!PzN3a$fQWXfJTAXP4f)aOVCfJ*!AX7v-Pl(0|E(?16tDaQlj}s^w5)1h2!E`8r^rEg?SZ(dF3W0aT9! z?Q{Os+TRay+tu(dWy65Lc2-H~6PKo8;;tauM6g#n?r%0A!aYl=_6B;?i^#a{h|4QV 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 Yovq+kX@PQqK=i=(5>WHH>aQ~SAJ=m5)c^nh diff --git a/TestCases/Data/CSV/conference_demand.xlsx b/TestCases/Data/CSV/conference_demand.xlsx deleted file mode 100644 index 6b6e863aea2fc3ad3fb4beaa0358e357ffa806b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39610 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 diff --git a/TestCases/Data/CSV/gh_demand.csv b/TestCases/Data/CSV/gh_demand.csv deleted file mode 100644 index f42552c2..00000000 --- a/TestCases/Data/CSV/gh_demand.csv +++ /dev/null @@ -1,11 +0,0 @@ -,Length,Width,Height,Area,Moment of Inertia,Material,Manufacturer,Latitude,Longitude -0,8.88,2.93,1.85,0.00164,5.41e-06,Steel,0,0,0 -1,3.42,8.45,2.7,0.2521618286717396,0.005298798986589646,Timber,0,0,0 -2,3.78,8.66,2.69,0.2822683200581487,0.0066396170423707905,Timber,0,0,0 -3,9.38,6.14,9.2,0.26728199288525945,0.005953305310059657,Timber,0,0,0 -4,9.19,1.25,7.53,0.00164,5.41e-06,Steel,0,0,0 -5,2.63,2.16,6.18,0.1912968402601083,0.0030495400911251156,Timber,0,0,0 -6,3.92,1.02,2.39,0.00164,5.41e-06,Steel,0,0,0 -7,3.77,2.32,2.16,0.00239,1.32e-05,Steel,0,0,0 -8,3.95,6.15,4.91,0.00103,1.71e-06,Steel,0,0,0 -9,6.36,3.81,4.4,0.1562427518946861,0.002034316459968703,Timber,0,0,0 diff --git a/TestCases/Data/CSV/gh_demand1.csv b/TestCases/Data/CSV/gh_demand1.csv deleted file mode 100644 index 754ac632..00000000 --- a/TestCases/Data/CSV/gh_demand1.csv +++ /dev/null @@ -1,11 +0,0 @@ -,Length,Width,Height,Area,Moment of Inertia,Material,Manufacturer,Latitude,Longitude -0,2.64,2.8,8.94,0.28209038056747726,0.006631248567392012,Timber,0,0,0 -1,1.01,1.67,9.25,0.2033253844994837,0.003445100998488574,Timber,0,0,0 -2,3.84,1.87,8.07,0.2647366317011006,0.0058404570137036834,Timber,0,0,0 -3,2.31,5.31,6.73,0.15692491317156831,0.002052119031158688,Timber,0,0,0 -4,9.61,7.69,9.84,0.1789800678250585,0.002669488723221878,Timber,0,0,0 -5,3.27,1.3,5.65,0.24315867408799574,0.004927178398686011,Timber,0,0,0 -6,1.47,7.44,3.5,0.00201,8.69e-06,Steel,0,0,0 -7,7.66,5.38,1.66,0.00538,8.36e-05,Steel,0,0,0 -8,4.89,2.29,7.96,0.25177408751171315,0.00528251592852965,Timber,0,0,0 -9,7.05,6.24,2.32,0.00334,2.77e-05,Steel,0,0,0 diff --git a/TestCases/Data/CSV/gh_supply.csv b/TestCases/Data/CSV/gh_supply.csv deleted file mode 100644 index f9ddd756..00000000 --- a/TestCases/Data/CSV/gh_supply.csv +++ /dev/null @@ -1,11 +0,0 @@ -,Length,Width,Height,Area,Moment of Inertia,Material,Location,Latitude,Longitude -0,5.64,5.88,2.15,0.26589155109639107,0.005891526412037062,Timber,Orkanger,63.3000,9.8468 -1,1.27,1.07,4.86,0.17651348476502932,0.0025964175253245197,Timber,Storlien,63.3160,12.1018 -2,9.4,9.3,7.98,0.24379455264462815,0.004952981991599531,Timber,Storlien,63.3160,12.1018 -3,6.13,7.66,4.77,0.2696940579260394,0.006061240406717825,Timber,Tiller,63.3604,10.4008 -4,8.78,9.51,6.95,0.00103,1.71e-06,Steel,Storlien,63.3160,12.1018 -5,2.71,8.51,1.78,0.00239,1.32e-05,Steel,Tiller,63.3604,10.4008 -6,4.71,7.07,3.07,0.00164,5.41e-06,Steel,Orkanger,63.3000,9.8468 -7,5.55,7.77,2.34,0.00164,5.41e-06,Steel,Gjovik,60.8941,10.5001 -8,7.71,8.56,9.86,0.2096207604057341,0.003661738599423182,Timber,Storlien,63.3160,12.1018 -9,1.47,5.02,2.04,0.00538,8.36e-05,Steel,Gjovik,60.8941,10.5001 diff --git a/TestCases/Data/CSV/gh_supply1.csv b/TestCases/Data/CSV/gh_supply1.csv deleted file mode 100644 index 7b3fd176..00000000 --- a/TestCases/Data/CSV/gh_supply1.csv +++ /dev/null @@ -1,11 +0,0 @@ -,Length,Width,Height,Area,Moment of Inertia,Material,Location,Latitude,Longitude -0,4.33,4.81,7.05,0.26037355017715463,0.0056495321359879384,Timber,Storlien,63.3160,12.1018 -1,1.77,6.76,5.97,0.00201,8.69e-06,Steel,Orkanger,63.3000,9.8468 -2,6.77,2.19,4.63,0.00239,1.32e-05,Steel,Orkanger,63.3000,9.8468 -3,5.24,5.29,4.51,0.00334,2.77e-05,Steel,Storlien,63.3160,12.1018 -4,8.69,3.01,8.09,0.18003273630664268,0.002700982178504761,Timber,Gjovik,60.8941,10.5001 -5,4.98,4.4,1.26,0.00103,1.71e-06,Steel,Storlien,63.3160,12.1018 -6,6.0,2.13,6.53,0.00201,8.69e-06,Steel,Tiller,63.3604,10.4008 -7,1.05,8.62,8.19,0.17565914664080487,0.0025713446498813156,Timber,Orkanger,63.3000,9.8468 -8,7.8,2.69,4.15,0.1790105743136291,0.002670398809674611,Timber,Storlien,63.3160,12.1018 -9,4.67,2.9,6.72,0.224476779399125,0.004199152040783619,Timber,Orkanger,63.3000,9.8468 diff --git a/TestCases/Data/CSV/master_thesis_demand.xlsx b/TestCases/Data/CSV/master_thesis_demand.xlsx deleted file mode 100644 index 1fb7e0ea57ebd72073d2cb2d806e444d95173244..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51019 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 delta 1064 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 X!)$+#3jd#0{tW)}8JXi~;X~-(4=bCE delta 2656 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 PAX!B+Dm-_N{ILE5sOs52 diff --git a/TestCases/Data/CSV/test_supply_IFC_result1.xlsx b/TestCases/Data/CSV/test_supply_IFC_result1.xlsx index 4ecc7813e87de6b5c3217eeef56c8a8ce2626ee4..87f175529dae9d2cab8e2c44cfd50af7940011ea 100644 GIT binary patch delta 5428 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

1*S=y1U~Jvk6@K6ryCu9<_2jUFvL|j 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

PoqBs$XE@1~b7nZ25N}=^QBfH9-kY&qSQzgls zb{;<^7Atg&4NWUPvF`0=>%6&T0DCgi({_Y2>lw7ROqI#F&4>yE=|4^*7Z6!=Fabyb zhkBLY?(>yR=U+g+QXNVg9zSF9P#oFY26Feh?J6~VpEG(0X%7wi+A(`OxemNu(7mj8 z-e?Kh{$7TK?U)^z_Pux&9smWI-JI;{hPtdCDxJJ8^2s~0p{Z!2mb|N>bdQK0QN^K0 z21cWT^a?RT4G4$1?sU3-8SH%m4IPRl6g~KC{NdUNWsu+dZbqA$I*Qi+D~15lAZ%jV z+fF9#l=o*t56lMJW$GInC?_Bnn@B1f3EAMCBYgX}UyiNtz6tyXKI$Z)gMvbPq`{nn zEq&Lz{(~5SABKj?!Vg1S)%hR8N6qYCNMq)!9r>{}u4WsXTF8Q te#A=', 'Moment of Inertia' : '>=', 'Length' : '>=', 'Width' : '>=', 'Height' : '>=', 'Material': '==', 'Quality' : '>='}, + "constraint_dict": {'Area' : '>=', 'Iy e-6' : '>=', 'Length' : '>=', 'Width' : '>=', 'Height' : '>=', 'Material': '==', 'Quality' : '>='}, "constraint2D_dict" : {'Width' : '==', 'Height' : '==', 'Material' : '==', 'Quality' : '>='}, "constraint3D_dict" : {'Length' : '>=','Width' : '==', 'Height' : '==', 'Material' : '==', 'Quality' : '>='}, - "materials" : {"Timber", "Steel", "Window", "Door", "Slab", "Concrete - B35", "Steel - S355", "Steel - S235"}, + "Name" : {"Timber", "Steel", "Window", "Door", "Slab", "Concrete - B35", "Steel - S355", "Steel - S235"}, "element_linear" : {"IfcBeam", "IfcColumn"}, "element_2d" : {"IfcWindow", "IfcDoor"}, "element_3d" : {"IfcSlab"} @@ -147,7 +153,7 @@ demand = hmpdf.add_necessary_columns_pdf(demand, constants) -m= Matching(demand, supply, score_function_string, score_function_string_2d, constraints = constraint_dict, constraints2D = constraint2D_dict, constraints3D = constraint3D_dict, solution_limit=60, constants = constants) +m= Matching(demand, supply, score_function_string, score_function_string_2d, constants, constraints = constraint_dict, constraints2D = constraint2D_dict, constraints3D = constraint3D_dict, solution_limit=60) m.match_greedy(plural_assign=True) simple_pairs = m.pairs @@ -170,6 +176,10 @@ print("Simple " + constants["Metric"] + " score;") print(simple_results) + + +#hm.export_dataframe_to_xlsx(pd.DataFrame(m.weights, r"" + "./app/matchingTool/src/TestCases/Data/CSV/Results/weights_before")) + constants["Metric"] = "Price" score_function_string = hm.generate_score_function_string(constants) score_function_string = score_function_string.replace(" ", "") @@ -201,13 +211,15 @@ else: m.supply['GWP pr element'], m.supply['Transportation'] = m.supply.eval(m.score_function_string_2d) -hm.export_dataframe_to_xlsx(m.supply, r"" + "./TestCases/Data/CSV/test_supply_IFC_result1.xlsx") -hm.export_dataframe_to_xlsx(m.demand, r"" + "./TestCases/Data/CSV/test_demand_IFS_result1.xlsx") -hm.export_dataframe_to_xlsx(m.pairs, r"" + "./TestCases/Data/CSV/pairs1.xlsx") + +#hm.export_dataframe_to_xlsx(m.weights, r"" + "./app/matchingTool/src/TestCases/Data/CSV/Results/weights") +hm.export_dataframe_to_xlsx(m.supply, r"" + "./app/matchingTool/src/TestCases/Data/CSV/Results/test_supply_IFC_result1.xlsx") +hm.export_dataframe_to_xlsx(m.demand, r"" + "./app/matchingTool/src/TestCases/Data/CSV/Results/test_demand_IFS_result1.xlsx") +hm.export_dataframe_to_xlsx(m.pairs, r"" + "./app/matchingTool/src/TestCases/Data/CSV/Results/pairs.xlsx") print(m.demand) -print(m.supply) +print(m.supply) \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 00000000..e69de29b