1- using ReliabilityOptimization, Test, NonconvexTOBS, ChainRulesCore, TopOpt, Zygote, FiniteDifferences
1+ using ReliabilityOptimization,
2+ Test, NonconvexTOBS, ChainRulesCore, TopOpt, Zygote, FiniteDifferences
23
34const densities = [0.0 , 0.5 , 1.0 ] # for mass calculation
45const nmats = 3 # number of materials
@@ -22,11 +23,11 @@ logEs = MvNormal(log.(avgEs), Matrix(Diagonal(0.1 .* abs.(log.(avgEs)))))
2223# 'Original' function. At least one input is random.
2324# In this example, Es is the random input.
2425function uncertainComp (x, logEs)
25- Es = exp .(logEs)
26- # interpolation of properties between materials
27- interp = MaterialInterpolation (Es, penalty)
28- MultiMaterialVariables (x, nmats) |> interp |> filter |> comp
29- # return sum(x) + sum(Es)
26+ Es = exp .(logEs)
27+ # interpolation of properties between materials
28+ interp = MaterialInterpolation (Es, penalty)
29+ MultiMaterialVariables (x, nmats) |> interp |> filter |> comp
30+ # return sum(x) + sum(Es)
3031end
3132# wrap original function in RandomFunction struct
3233rf = RandomFunction (uncertainComp, logEs, FORM (RIA ()))
@@ -41,8 +42,8 @@ constr = x -> begin
4142 return sum (element_densities (ρs, densities)) / ncells - 0.3 # unit element volume
4243end
4344function obj (x) # objective for TO problem
44- dist = rf (x)
45- mean (dist)[1 ] + 2 * sqrt (cov (dist)[1 , 1 ])
45+ dist = rf (x)
46+ mean (dist)[1 ] + 2 * sqrt (cov (dist)[1 , 1 ])
4647end
4748obj (x0)
4849Zygote. gradient (obj, x0)
@@ -51,4 +52,4 @@ FiniteDifferences.grad(central_fdm(5, 1), obj, x0)[1]
5152m = Model (obj) # create optimization model
5253addvar! (m, zeros (length (x0)), ones (length (x0))) # setup optimization variables
5354Nonconvex. add_ineq_constraint! (m, constr) # setup volume inequality constraint
54- @time r = Nonconvex. optimize (m, TOBSAlg (), x0; options = TOBSOptions ())
55+ @time r = Nonconvex. optimize (m, TOBSAlg (), x0; options = TOBSOptions ())
0 commit comments