Objective
When running large use cases, the new optimisation script tends to encounter a memory error, which is linked to the copy library's deepcopy() method, as described in issue #3524. This PR addresses this issue by introducing new __copy()__ methods for objects of the SupplySystem and DistrictEnergySystem classes that operate more explicitly and thus more efficiently in terms of memory usage.
To Test
For an elaborate test, a profiler could be used to compare the scripts' performance before and after this change.
A more straightforward test would be to check if the script maintains the same functionality by comparing the structure of results of a run before and after this change. (Since the optimisation script contains inherent randomness, the results will not be exactly the same but they should at least be quite comparable in terms of optimal energy systems, objective functions etc.)
Objective When running large use cases, the new optimisation script tends to encounter a memory error, which is linked to the
copy
library'sdeepcopy()
method, as described in issue #3524. This PR addresses this issue by introducing new__copy()__
methods for objects of theSupplySystem
andDistrictEnergySystem
classes that operate more explicitly and thus more efficiently in terms of memory usage.To Test For an elaborate test, a profiler could be used to compare the scripts' performance before and after this change. A more straightforward test would be to check if the script maintains the same functionality by comparing the structure of results of a run before and after this change. (Since the optimisation script contains inherent randomness, the results will not be exactly the same but they should at least be quite comparable in terms of optimal energy systems, objective functions etc.)