@@ -26,7 +26,7 @@ function uncertainComp(x, logEs)
26
26
Es = exp .(logEs)
27
27
# interpolation of properties between materials
28
28
interp = MaterialInterpolation (Es, penalty)
29
- MultiMaterialVariables (x, nmats) |> interp |> filter |> comp
29
+ MultiMaterialVariables (x, nmats) |> tounit |> filter |> interp |> comp
30
30
# return sum(x) + sum(Es)
31
31
end
32
32
# wrap original function in RandomFunction struct
@@ -37,19 +37,29 @@ x0 = fill(M, ncells * (length(logEs) - 1))
37
37
# (Returns propability distribution of the objective for current point)
38
38
d = rf (x0)
39
39
# mass constraint
40
+ constr_penalty = TopOpt. PowerPenalty (1.0 )
41
+ constr_interp = MaterialInterpolation (densities, constr_penalty)
40
42
constr = x -> begin
41
- ρs = PseudoDensities (MultiMaterialVariables (x, nmats))
42
- return sum (element_densities (ρs, densities)) / ncells - 0.3 # unit element volume
43
+ ρs = constr_interp (MultiMaterialVariables (x, nmats))
44
+ return sum (ρs . x) / ncells - 0.3 # elements have unit volumes
43
45
end
44
46
function obj (x) # objective for TO problem
45
47
dist = rf (x)
46
48
mean (dist)[1 ] + 2 * sqrt (cov (dist)[1 , 1 ])
47
49
end
48
50
obj (x0)
49
- Zygote. gradient (obj, x0)
50
- FiniteDifferences. grad (central_fdm (5 , 1 ), obj, x0)[1 ]
51
+ g1 = Zygote. gradient (obj, x0)[1 ]
52
+ g2 = FiniteDifferences. grad (central_fdm (5 , 1 ), obj, x0)[1 ]
53
+ norm (g1 - g2)
54
+
55
+ cg1 = Zygote. gradient (constr, x0)[1 ]
56
+ cg2 = FiniteDifferences. grad (central_fdm (5 , 1 ), constr, x0)[1 ]
57
+ norm (cg1 - cg2)
51
58
52
59
m = Model (obj) # create optimization model
53
60
addvar! (m, zeros (length (x0)), ones (length (x0))) # setup optimization variables
54
61
Nonconvex. add_ineq_constraint! (m, constr) # setup volume inequality constraint
62
+
55
63
@time r = Nonconvex. optimize (m, TOBSAlg (), x0; options = TOBSOptions ())
64
+ # @time r = Nonconvex.optimize(m, IpoptAlg(), x0; options = IpoptOptions())
65
+ # @time r = Nonconvex.optimize(m, MMA87(), x0; options = MMAOptions())
0 commit comments