From 2a108798b87f4a3a3758e095c6e928ece0ee90a2 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk> Date: Sat, 27 Jan 2024 16:10:58 +0000 Subject: [PATCH] Add JuMP helper methods for BuildingBlocks --- src/building_blocks.jl | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/building_blocks.jl b/src/building_blocks.jl index 715092b..cb23eb7 100644 --- a/src/building_blocks.jl +++ b/src/building_blocks.jl @@ -1,5 +1,5 @@ module BuildingBlocks -import JuMP: has_values, GenericVariableRef, value, Model, @constraint, @objective, owner_model, objective_function +import JuMP: has_values, GenericVariableRef, value, Model, @constraint, @objective, owner_model, objective_function, optimize!, AbstractJuMPScalar import Printf: @sprintf import ..Scanners: Scanner import ..Variables: variables, start_time, duration, end_time, gradient_strength, slew_rate @@ -138,4 +138,20 @@ function match_blocks!(block1::BuildingBlock, block2::BuildingBlock) match_blocks!(block1, block2, property_list) end + +optimize!(bb::BuildingBlock) = optimize!(owner_model(bb)) +function owner_model(bb::BuildingBlock) + if hasproperty(bb, :model) + return bb.model + else + for name in propertynames(bb) + value = getproperty(bb, name) + if value isa AbstractJuMPScalar + return owner_model(value) + end + end + end + error("Cannot find owner model of $bb") +end + end \ No newline at end of file -- GitLab