Comparing Penalty Functions

Description

The SIMP penalty maps the design density x to the effective stiffness material used in the finite-element assembly. A steeper penalty suppresses intermediate (“gray”) densities, but too steep a penalty makes the problem non-convex and hard to optimize. TopOpt.jl provides four penalties:

  • PowerPenaltyFun(p) — the classic SIMP power law x^p.
  • RationalPenaltyFun(p)x / (1 + p(1 - x)), smoother than the power law for the same exponent.
  • SinhPenaltyFun(p)sinh(p·x) / sinh(p), another smooth alternative.
  • ProjectedPenaltyFun(penalty, proj) — applies a projection (default HeavisideProjectionFun(10)) before the penalty, pushing toward a near-binary design.

This tutorial compares their curves, their effect on the optimized design, and the sensitivity of the result to the penalty parameter.

Setup

using TopOpt, LinearAlgebra
using WGLMakie
WGLMakie.activate!(; resize_to=:parent)
using Bonito
if haskey(ENV, "QUARTO_PROJECT_DIR")
    Bonito.Page(exportable=true, offline=true)
else
    Bonito.browser_display()
end
display_app(app) = display(app)

WGLMakie.activate!(; resize_to=:parent) selects the browser renderer and fills the Quarto output column. Bonito.Page(exportable=true, offline=true) embeds the assets needed by visualize(...; static=true) in the Quarto output, so the visualization does not require a running Julia process.

The penalty curves

p = 3.0
penalties = [
    ("power", PowerPenaltyFun(p)),
    ("rational", RationalPenaltyFun(p)),
    ("sinh", SinhPenaltyFun(p)),
    ("projected", ProjectedPenaltyFun(PowerPenaltyFun(p))),
]
for x in (0.1, 0.3, 0.5, 0.8, 1.0)
    vals = [round(P(x), digits=3) for (_, P) in penalties]
    println("x=$x → ", join(["$(n)=$v" for ((n, _), v) in zip(penalties, vals)], "  "))
end
x=0.1 → power=0.001  rational=0.027  sinh=0.03  projected=0.253
x=0.3 → power=0.027  rational=0.097  sinh=0.102  projected=0.858
x=0.5 → power=0.125  rational=0.2  sinh=0.213  projected=0.98
x=0.8 → power=0.512  rational=0.5  sinh=0.546  projected=0.999
x=1.0 → power=1.0  rational=1.0  sinh=1.0  projected=1.0
using Makie
xs = range(0.0, 1.0; length=101)
fig = Figure()
ax = Axis(fig[1, 1]; xlabel="design density x", ylabel="penalty P(x)")
for (name, P) in penalties
    lines!(ax, xs, P.(xs); label=name)
end
axislegend(ax)
display_app(fig)
(a) Penalty functions (p = 3): stiffness multiplier P(x) vs design density x
WGLMakie.Screen(
    framerate = 30.0,
    resize_to = parent,
    px_per_unit = automatic,
    scalefactor = automatic,
    session = false,
    three = Channel{Any}(1) (empty),
    scene = Scene (672px, 480px):
  0 Plots
  2 Child Scenes:
    ├ Scene (672px, 480px)
    └ Scene (672px, 480px),
)
(b)
Figure 1

At x = 0.5 the rational and sinh penalties are milder than the power law (more intermediate stiffness), while the projected penalty is already nearly binary.

Optimize with each penalty

We solve the same Half MBB compliance problem with each penalty (exponent 3) and measure the resulting grayness — the fraction of elements in the intermediate band (0.1, 0.9).

E, ν, f = 1.0, 0.3, 1.0
nels = (60, 20)
N = prod(nels)
V = 0.5
rmin = 2.0

problem = HalfMBB(nels, (1.0, 1.0), E, ν, f)
grayness(x) = count(0.1 .< x .< 0.9) / length(x)

function solve_with(penalty)
    solver = FEASolver(DirectSolver, problem; xmin=0.001, penalty=penalty)
    filter = DensityFilterFun(solver; rmin=rmin)
    comp = ComplianceFun(solver)
    volfrac = VolumeFun(solver)
    obj = x -> comp(filter(PseudoDensities(x)))
    constr = x -> volfrac(filter(PseudoDensities(x))) - V
    model = Model(obj)
    addvar!(model, zeros(N), ones(N))
    add_ineq_constraint!(model, constr)
    r = optimize(model, MMA87(), fill(V, N);
        options=MMAOptions(; maxiter=120, tol=Tolerance(; kkt=1e-4, f=1e-4)))
    topo = filter(PseudoDensities(r.minimizer)).x
    return obj(r.minimizer), constr(r.minimizer) + V, grayness(topo), topo
end
results = Dict{String,Any}()
for (name, P) in penalties
    c, vol, g, topo = solve_with(P)
    results[name] = topo
    println("$(lpad(name, 10)): compliance = $(round(c, digits=2)), vol = $(round(vol, digits=3)), gray = $(round(g, digits=3))")
end
[ Info:   iter       obj      Δobj  violation  kkt_residual  
[ Info:      0   9.1e+02       Inf   0.0e+00   5.2e+01
[ Info:      1   6.2e+02   2.9e+02   0.0e+00   1.6e+02
[ Info:      2   4.3e+02   1.9e+02   0.0e+00   3.7e+01
[ Info:      3   3.6e+02   6.6e+01   0.0e+00   1.3e+01
[ Info:      4   3.3e+02   2.7e+01   0.0e+00   5.8e+00
[ Info:      5   3.2e+02   1.6e+01   0.0e+00   3.4e+00
[ Info:      6   3.1e+02   1.1e+01   0.0e+00   2.6e+00
[ Info:      7   3.0e+02   8.8e+00   0.0e+00   2.2e+00
[ Info:      8   2.9e+02   7.5e+00   0.0e+00   1.8e+00
[ Info:      9   2.8e+02   6.5e+00   0.0e+00   1.6e+00
[ Info:     10   2.8e+02   6.0e+00   0.0e+00   1.4e+00
[ Info:     11   2.7e+02   6.0e+00   0.0e+00   1.4e+00
[ Info:     12   2.6e+02   7.4e+00   0.0e+00   1.6e+00
[ Info:     13   2.5e+02   9.3e+00   0.0e+00   2.1e+00
[ Info:     14   2.4e+02   1.1e+01   0.0e+00   2.3e+00
[ Info:     15   2.3e+02   1.0e+01   0.0e+00   2.1e+00
[ Info:     16   2.2e+02   8.1e+00   0.0e+00   1.4e+00
[ Info:     17   2.2e+02   4.5e+00   0.0e+00   7.6e-01
[ Info:     18   2.2e+02   2.4e+00   0.0e+00   4.7e-01
[ Info:     19   2.2e+02   1.5e+00   0.0e+00   4.3e-01
[ Info:     20   2.1e+02   9.8e-01   0.0e+00   2.7e-01
[ Info:     21   2.1e+02   6.6e-01   0.0e+00   2.8e-01
[ Info:     22   2.1e+02   5.2e-01   0.0e+00   2.8e-01
[ Info:     23   2.1e+02   4.8e-01   0.0e+00   2.4e-01
[ Info:     24   2.1e+02   5.0e-01   0.0e+00   2.1e-01
[ Info:     25   2.1e+02   4.6e-01   0.0e+00   1.6e-01
[ Info:     26   2.1e+02   2.7e-01   0.0e+00   1.0e-01
[ Info:     27   2.1e+02   1.1e-01   0.0e+00   9.2e-02
[ Info:     28   2.1e+02   6.0e-02   0.0e+00   6.1e-02
[ Info:     29   2.1e+02   3.4e-02   0.0e+00   6.5e-02
[ Info:     30   2.1e+02   2.4e-02   0.0e+00   6.7e-02
[ Info:     31   2.1e+02   2.0e-02   0.0e+00   6.7e-02
[ Info:     32   2.1e+02   1.6e-02   0.0e+00   6.3e-02
[ Info:     33   2.1e+02   1.6e-02   0.0e+00   6.1e-02
[ Info:     34   2.1e+02   1.6e-02   0.0e+00   6.0e-02
[ Info:     35   2.1e+02   1.7e-02   0.0e+00   5.9e-02
[ Info:     36   2.1e+02   1.4e-02   0.0e+00   1.5e-02
[ Info:     37   2.1e+02   8.4e-03   0.0e+00   1.3e-02
[ Info:     38   2.1e+02   6.6e-03   0.0e+00   1.3e-02
[ Info:     39   2.1e+02   5.5e-03   0.0e+00   1.3e-02
[ Info:     40   2.1e+02   4.4e-03   0.0e+00   9.6e-03
[ Info:     41   2.1e+02   2.8e-03   0.0e+00   8.0e-03
[ Info:     42   2.1e+02   2.0e-03   0.0e+00   6.5e-03
[ Info:     43   2.1e+02   1.3e-03   0.0e+00   6.4e-03
[ Info:     44   2.1e+02   1.1e-03   0.0e+00   5.9e-03
[ Info:     45   2.1e+02   1.0e-03   0.0e+00   5.9e-03
[ Info:     46   2.1e+02   1.0e-03   0.0e+00   5.4e-03
[ Info:     47   2.1e+02   9.6e-04   0.0e+00   5.4e-03
[ Info:     48   2.1e+02   9.1e-04   0.0e+00   5.3e-03
[ Info:     49   2.1e+02   8.7e-04   0.0e+00   5.2e-03
[ Info:     50   2.1e+02   8.5e-04   0.0e+00   5.1e-03
[ Info:     51   2.1e+02   8.2e-04   0.0e+00   5.0e-03
[ Info:     52   2.1e+02   8.0e-04   0.0e+00   4.9e-03
[ Info:     53   2.1e+02   7.7e-04   0.0e+00   4.8e-03
[ Info:     54   2.1e+02   6.5e-04   0.0e+00   4.1e-03
[ Info:     55   2.1e+02   5.6e-04   0.0e+00   3.9e-03
[ Info:     56   2.1e+02   4.8e-04   0.0e+00   3.5e-03
[ Info:     57   2.1e+02   4.2e-04   0.0e+00   3.5e-03
[ Info:     58   2.1e+02   3.7e-04   0.0e+00   3.2e-03
[ Info:     59   2.1e+02   3.2e-04   0.0e+00   3.9e-03
[ Info:     60   2.1e+02   2.8e-04   0.0e+00   4.0e-03
[ Info:     61   2.1e+02   2.4e-04   0.0e+00   4.4e-03
[ Info:     62   2.1e+02   2.1e-04   0.0e+00   4.6e-03
[ Info:     63   2.1e+02   1.6e-04   0.0e+00   4.1e-03
[ Info:     64   2.1e+02   1.3e-04   0.0e+00   2.8e-03
[ Info:     65   2.1e+02   8.8e-05   0.0e+00   2.6e-03
[ Info:     66   2.1e+02   6.6e-05   0.0e+00   1.7e-03
[ Info:     67   2.1e+02   5.9e-05   0.0e+00   1.7e-03
[ Info:     68   2.1e+02   5.9e-05   0.0e+00   1.7e-03
[ Info:     69   2.1e+02   6.0e-05   0.0e+00   1.7e-03
[ Info:     70   2.1e+02   6.0e-05   0.0e+00   1.7e-03
[ Info:     71   2.1e+02   6.0e-05   0.0e+00   1.7e-03
[ Info:     72   2.1e+02   5.9e-05   0.0e+00   1.7e-03
[ Info:     73   2.1e+02   5.8e-05   0.0e+00   1.7e-03
[ Info:     74   2.1e+02   5.6e-05   0.0e+00   1.6e-03
[ Info:     75   2.1e+02   5.5e-05   0.0e+00   1.6e-03
[ Info:     76   2.1e+02   5.3e-05   0.0e+00   1.6e-03
[ Info:     77   2.1e+02   5.1e-05   0.0e+00   1.6e-03
[ Info:     78   2.1e+02   4.5e-05   0.0e+00   1.4e-03
[ Info:     79   2.1e+02   4.1e-05   0.0e+00   1.5e-03
[ Info:     80   2.1e+02   3.7e-05   0.0e+00   1.4e-03
[ Info:     81   2.1e+02   3.4e-05   0.0e+00   1.6e-03
[ Info:     82   2.1e+02   3.1e-05   0.0e+00   1.3e-03
[ Info:     83   2.1e+02   2.9e-05   0.0e+00   1.6e-03
[ Info:     84   2.1e+02   2.7e-05   0.0e+00   1.2e-03
[ Info:     85   2.1e+02   2.5e-05   0.0e+00   1.8e-03
[ Info:     86   2.1e+02   2.3e-05   0.0e+00   1.4e-03
[ Info:     87   2.1e+02   2.2e-05   0.0e+00   2.0e-03
[ Info:     88   2.1e+02   2.1e-05   0.0e+00   1.5e-03
[ Info:     89   2.1e+02   2.0e-05   0.0e+00   2.0e-03
[ Info:     90   2.1e+02   2.0e-05   0.0e+00   1.4e-03
[ Info:     91   2.1e+02   1.9e-05   0.0e+00   1.7e-03
[ Info:     92   2.1e+02   1.5e-05   0.0e+00   9.5e-04
[ Info:     93   2.1e+02   7.6e-06   0.0e+00   1.0e-03
[ Info:     94   2.1e+02   3.6e-06   0.0e+00   1.0e-03
[ Info:     95   2.1e+02   3.2e-06   0.0e+00   9.9e-04
[ Info:     96   2.1e+02   3.1e-06   0.0e+00   9.3e-04
[ Info:     97   2.1e+02   3.2e-06   0.0e+00   8.6e-04
[ Info:     98   2.1e+02   3.2e-06   0.0e+00   7.8e-04
[ Info:     99   2.1e+02   3.2e-06   0.0e+00   7.1e-04
[ Info:    100   2.1e+02   3.2e-06   0.0e+00   6.3e-04
[ Info:    101   2.1e+02   3.2e-06   0.0e+00   5.6e-04
[ Info:    102   2.1e+02   3.2e-06   0.0e+00   4.9e-04
[ Info:    103   2.1e+02   3.1e-06   0.0e+00   4.3e-04
[ Info:    104   2.1e+02   3.0e-06   0.0e+00   3.8e-04
[ Info:    105   2.1e+02   2.7e-06   0.0e+00   3.6e-04
[ Info:    106   2.1e+02   2.4e-06   0.0e+00   3.2e-04
[ Info:    107   2.1e+02   2.1e-06   0.0e+00   3.0e-04
[ Info:    108   2.1e+02   1.8e-06   0.0e+00   2.6e-04
[ Info:    109   2.1e+02   1.6e-06   0.0e+00   2.5e-04
[ Info:    110   2.1e+02   1.5e-06   0.0e+00   2.2e-04
[ Info:    111   2.1e+02   1.3e-06   0.0e+00   2.0e-04
[ Info:    112   2.1e+02   1.2e-06   0.0e+00   1.8e-04
[ Info:    113   2.1e+02   1.1e-06   0.0e+00   1.7e-04
[ Info:    114   2.1e+02   1.0e-06   0.0e+00   1.7e-04
[ Info:    115   2.1e+02   9.4e-07   0.0e+00   1.6e-04
[ Info:    116   2.1e+02   8.7e-07   0.0e+00   1.6e-04
[ Info:    117   2.1e+02   8.1e-07   0.0e+00   1.6e-04
[ Info:    118   2.1e+02   7.6e-07   0.0e+00   1.5e-04
[ Info:    119   2.1e+02   7.1e-07   0.0e+00   1.5e-04
[ Info:    120   2.1e+02   6.7e-07   0.0e+00   1.4e-04
     power: compliance = 211.73, vol = 0.5, gray = 0.381
[ Info:   iter       obj      Δobj  violation  kkt_residual  
[ Info:      0   5.7e+02       Inf   0.0e+00   1.7e+01
[ Info:      1   4.2e+02   1.5e+02   0.0e+00   5.5e+01
[ Info:      2   3.1e+02   1.2e+02   0.0e+00   2.0e+01
[ Info:      3   2.5e+02   5.1e+01   0.0e+00   7.1e+00
[ Info:      4   2.4e+02   1.7e+01   0.0e+00   2.9e+00
[ Info:      5   2.3e+02   7.3e+00   0.0e+00   1.4e+00
[ Info:      6   2.3e+02   3.8e+00   0.0e+00   8.0e-01
[ Info:      7   2.2e+02   2.4e+00   0.0e+00   5.6e-01
[ Info:      8   2.2e+02   1.9e+00   0.0e+00   4.6e-01
[ Info:      9   2.2e+02   1.7e+00   0.0e+00   4.2e-01
[ Info:     10   2.2e+02   1.8e+00   0.0e+00   4.3e-01
[ Info:     11   2.2e+02   1.7e+00   0.0e+00   3.6e-01
[ Info:     12   2.2e+02   1.1e+00   0.0e+00   2.6e-01
[ Info:     13   2.1e+02   8.7e-01   0.0e+00   2.0e-01
[ Info:     14   2.1e+02   6.7e-01   0.0e+00   1.7e-01
[ Info:     15   2.1e+02   6.0e-01   0.0e+00   1.4e-01
[ Info:     16   2.1e+02   5.4e-01   0.0e+00   1.3e-01
[ Info:     17   2.1e+02   3.4e-01   0.0e+00   1.3e-01
[ Info:     18   2.1e+02   2.4e-01   0.0e+00   2.5e-01
[ Info:     19   2.1e+02   9.9e-02   0.0e+00   3.4e-01
[ Info:     20   2.1e+02   4.0e-02   0.0e+00   5.9e-01
[ Info:     21   2.1e+02   9.9e-01   0.0e+00   1.3e+00
[ Info:     22   2.1e+02   1.4e+00   0.0e+00   1.9e+00
[ Info:     23   2.2e+02   1.3e+00   0.0e+00   2.8e+00
[ Info:     24   2.2e+02   2.8e+00   0.0e+00   4.2e+00
[ Info:     25   2.2e+02   3.6e+00   0.0e+00   3.9e+00
[ Info:     26   2.1e+02   2.9e+00   0.0e+00   1.8e+00
[ Info:     27   2.1e+02   2.6e+00   0.0e+00   6.8e-01
[ Info:     28   2.1e+02   9.4e-01   0.0e+00   1.8e-01
[ Info:     29   2.1e+02   3.7e-01   0.0e+00   1.6e-01
[ Info:     30   2.1e+02   2.3e-01   0.0e+00   1.6e-01
[ Info:     31   2.1e+02   1.9e-01   0.0e+00   1.6e-01
[ Info:     32   2.1e+02   1.9e-01   0.0e+00   1.6e-01
[ Info:     33   2.1e+02   2.0e-01   0.0e+00   1.5e-01
[ Info:     34   2.1e+02   2.0e-01   0.0e+00   1.4e-01
[ Info:     35   2.1e+02   2.0e-01   0.0e+00   1.4e-01
[ Info:     36   2.1e+02   2.0e-01   0.0e+00   1.5e-01
[ Info:     37   2.1e+02   2.2e-01   0.0e+00   1.6e-01
[ Info:     38   2.1e+02   2.0e-01   0.0e+00   1.6e-01
[ Info:     39   2.1e+02   2.1e-01   0.0e+00   1.6e-01
[ Info:     40   2.1e+02   2.2e-01   0.0e+00   1.6e-01
[ Info:     41   2.1e+02   2.3e-01   0.0e+00   1.6e-01
[ Info:     42   2.1e+02   2.4e-01   0.0e+00   1.8e-01
[ Info:     43   2.1e+02   2.4e-01   0.0e+00   1.3e-01
[ Info:     44   2.1e+02   2.1e-01   0.0e+00   1.3e-01
[ Info:     45   2.0e+02   2.1e-01   0.0e+00   1.4e-01
[ Info:     46   2.0e+02   1.9e-01   0.0e+00   1.3e-01
[ Info:     47   2.0e+02   1.7e-01   0.0e+00   1.4e-01
[ Info:     48   2.0e+02   1.3e-01   0.0e+00   1.3e-01
[ Info:     49   2.0e+02   3.1e-02   0.0e+00   1.3e-01
[ Info:     50   2.0e+02   3.9e-02   0.0e+00   1.4e-01
[ Info:     51   2.0e+02   9.6e-02   0.0e+00   1.4e-01
[ Info:     52   2.0e+02   1.9e-01   0.0e+00   7.7e-02
[ Info:     53   2.0e+02   1.4e-01   0.0e+00   5.1e-02
[ Info:     54   2.0e+02   5.8e-02   0.0e+00   5.6e-02
[ Info:     55   2.0e+02   3.2e-02   0.0e+00   5.7e-02
[ Info:     56   2.0e+02   2.6e-02   0.0e+00   5.7e-02
[ Info:     57   2.0e+02   2.4e-02   0.0e+00   5.6e-02
[ Info:     58   2.0e+02   2.2e-02   0.0e+00   5.4e-02
[ Info:     59   2.0e+02   2.1e-02   0.0e+00   5.2e-02
[ Info:     60   2.0e+02   2.0e-02   0.0e+00   5.0e-02
[ Info:     61   2.0e+02   2.0e-02   0.0e+00   4.6e-02
[ Info:     62   2.0e+02   2.0e-02   0.0e+00   4.2e-02
[ Info:     63   2.0e+02   2.0e-02   0.0e+00   3.8e-02
[ Info:     64   2.0e+02   2.0e-02   0.0e+00   3.4e-02
[ Info:     65   2.0e+02   2.0e-02   0.0e+00   3.0e-02
[ Info:     66   2.0e+02   2.1e-02   0.0e+00   3.1e-02
[ Info:     67   2.0e+02   1.9e-02   0.0e+00   3.3e-02
[ Info:     68   2.0e+02   1.7e-02   0.0e+00   4.0e-02
[ Info:     69   2.0e+02   1.7e-02   0.0e+00   3.5e-02
[ Info:     70   2.0e+02   1.2e-02   0.0e+00   5.2e-02
[ Info:     71   2.0e+02   1.3e-02   0.0e+00   1.2e-01
[ Info:     72   2.0e+02   6.8e-02   0.0e+00   2.2e-01
[ Info:     73   2.0e+02   4.0e-02   0.0e+00   2.2e-01
[ Info:     74   2.0e+02   3.4e-02   0.0e+00   1.7e-01
[ Info:     75   2.0e+02   7.2e-02   0.0e+00   1.3e-01
[ Info:     76   2.0e+02   7.4e-02   0.0e+00   8.1e-02
[ Info:     77   2.0e+02   3.2e-02   0.0e+00   6.2e-02
[ Info:     78   2.0e+02   1.5e-02   0.0e+00   2.5e-02
[ Info:     79   2.0e+02   1.1e-02   0.0e+00   2.5e-02
[ Info:     80   2.0e+02   1.1e-02   0.0e+00   2.7e-02
[ Info:     81   2.0e+02   1.1e-02   0.0e+00   3.1e-02
[ Info:     82   2.0e+02   1.1e-02   0.0e+00   3.3e-02
[ Info:     83   2.0e+02   1.2e-02   0.0e+00   3.5e-02
[ Info:     84   2.0e+02   1.3e-02   0.0e+00   3.6e-02
[ Info:     85   2.0e+02   1.2e-02   0.0e+00   3.5e-02
[ Info:     86   2.0e+02   1.1e-02   0.0e+00   3.2e-02
[ Info:     87   2.0e+02   9.9e-03   0.0e+00   3.3e-02
[ Info:     88   2.0e+02   9.9e-03   0.0e+00   3.4e-02
[ Info:     89   2.0e+02   1.0e-02   0.0e+00   2.8e-02
[ Info:     90   2.0e+02   1.0e-02   0.0e+00   2.9e-02
[ Info:     91   2.0e+02   1.1e-02   0.0e+00   3.1e-02
[ Info:     92   2.0e+02   1.1e-02   0.0e+00   3.0e-02
[ Info:     93   2.0e+02   1.0e-02   0.0e+00   3.4e-02
[ Info:     94   2.0e+02   1.4e-03   0.0e+00   5.6e-02
[ Info:     95   2.0e+02   3.1e-02   0.0e+00   1.3e-01
[ Info:     96   2.0e+02   1.2e-01   0.0e+00   1.6e-01
[ Info:     97   2.0e+02   3.0e-02   0.0e+00   2.2e-01
[ Info:     98   2.0e+02   1.9e-01   0.0e+00   2.2e-01
[ Info:     99   2.0e+02   9.2e-02   0.0e+00   4.6e-01
[ Info:    100   2.0e+02   3.6e-02   0.0e+00   2.4e-01
[ Info:    101   2.0e+02   2.7e-01   0.0e+00   1.0e-01
[ Info:    102   2.0e+02   1.2e-01   0.0e+00   4.0e-02
[ Info:    103   2.0e+02   1.5e-02   0.0e+00   3.9e-02
[ Info:    104   2.0e+02   6.3e-03   0.0e+00   3.9e-02
[ Info:    105   2.0e+02   6.2e-03   0.0e+00   3.9e-02
[ Info:    106   2.0e+02   6.7e-03   0.0e+00   3.8e-02
[ Info:    107   2.0e+02   7.3e-03   0.0e+00   3.7e-02
[ Info:    108   2.0e+02   8.2e-03   0.0e+00   3.5e-02
[ Info:    109   2.0e+02   9.2e-03   0.0e+00   2.6e-02
[ Info:    110   2.0e+02   9.7e-03   0.0e+00   2.6e-02
[ Info:    111   2.0e+02   9.6e-03   0.0e+00   3.0e-02
[ Info:    112   2.0e+02   9.2e-03   0.0e+00   3.1e-02
[ Info:    113   2.0e+02   9.0e-03   0.0e+00   3.2e-02
[ Info:    114   2.0e+02   8.0e-03   0.0e+00   3.0e-02
[ Info:    115   2.0e+02   7.1e-03   0.0e+00   2.9e-02
[ Info:    116   2.0e+02   6.5e-03   0.0e+00   2.8e-02
[ Info:    117   2.0e+02   5.7e-03   0.0e+00   2.8e-02
[ Info:    118   2.0e+02   5.3e-03   0.0e+00   3.1e-02
[ Info:    119   2.0e+02   5.1e-03   0.0e+00   2.8e-02
[ Info:    120   2.0e+02   4.1e-03   0.0e+00   3.5e-02
  rational: compliance = 202.99, vol = 0.5, gray = 0.424
[ Info:   iter       obj      Δobj  violation  kkt_residual  
[ Info:      0   5.4e+02       Inf   0.0e+00   1.7e+01
[ Info:      1   3.9e+02   1.5e+02   0.0e+00   5.4e+01
[ Info:      2   2.9e+02   1.1e+02   0.0e+00   2.0e+01
[ Info:      3   2.4e+02   4.3e+01   0.0e+00   6.5e+00
[ Info:      4   2.3e+02   1.4e+01   0.0e+00   2.5e+00
[ Info:      5   2.2e+02   6.2e+00   0.0e+00   1.2e+00
[ Info:      6   2.2e+02   3.3e+00   0.0e+00   7.1e-01
[ Info:      7   2.2e+02   2.2e+00   0.0e+00   5.1e-01
[ Info:      8   2.1e+02   1.8e+00   0.0e+00   4.3e-01
[ Info:      9   2.1e+02   1.6e+00   0.0e+00   4.0e-01
[ Info:     10   2.1e+02   1.6e+00   0.0e+00   3.9e-01
[ Info:     11   2.1e+02   1.5e+00   0.0e+00   3.5e-01
[ Info:     12   2.1e+02   1.2e+00   0.0e+00   2.7e-01
[ Info:     13   2.1e+02   8.9e-01   0.0e+00   2.0e-01
[ Info:     14   2.1e+02   6.6e-01   0.0e+00   1.7e-01
[ Info:     15   2.1e+02   6.0e-01   0.0e+00   1.5e-01
[ Info:     16   2.1e+02   5.1e-01   0.0e+00   1.6e-01
[ Info:     17   2.1e+02   1.8e-02   0.0e+00   2.9e-01
[ Info:     18   2.1e+02   1.9e-01   0.0e+00   7.3e-01
[ Info:     19   2.1e+02   1.7e+00   0.0e+00   1.7e+00
[ Info:     20   2.1e+02   5.8e-01   0.0e+00   2.4e+00
[ Info:     21   2.1e+02   1.9e+00   0.0e+00   4.0e+00
[ Info:     22   2.1e+02   3.0e+00   0.0e+00   3.1e+00
[ Info:     23   2.0e+02   2.3e+00   0.0e+00   2.4e+00
[ Info:     24   2.0e+02   2.9e+00   0.0e+00   5.5e-01
[ Info:     25   2.0e+02   9.0e-01   0.0e+00   1.7e-01
[ Info:     26   2.0e+02   3.2e-01   0.0e+00   1.5e-01
[ Info:     27   2.0e+02   2.6e-01   0.0e+00   1.4e-01
[ Info:     28   2.0e+02   2.2e-01   0.0e+00   1.2e-01
[ Info:     29   2.0e+02   2.0e-01   0.0e+00   1.1e-01
[ Info:     30   2.0e+02   1.9e-01   0.0e+00   9.8e-02
[ Info:     31   2.0e+02   1.8e-01   0.0e+00   1.0e-01
[ Info:     32   2.0e+02   1.9e-01   0.0e+00   1.1e-01
[ Info:     33   2.0e+02   2.0e-01   0.0e+00   1.1e-01
[ Info:     34   2.0e+02   2.0e-01   0.0e+00   1.2e-01
[ Info:     35   2.0e+02   2.1e-01   0.0e+00   1.2e-01
[ Info:     36   2.0e+02   2.4e-01   0.0e+00   1.2e-01
[ Info:     37   2.0e+02   2.4e-01   0.0e+00   1.1e-01
[ Info:     38   2.0e+02   2.1e-01   0.0e+00   1.1e-01
[ Info:     39   2.0e+02   1.6e-01   0.0e+00   7.0e-02
[ Info:     40   2.0e+02   1.3e-01   0.0e+00   7.0e-02
[ Info:     41   2.0e+02   6.0e-02   0.0e+00   1.2e-01
[ Info:     42   2.0e+02   1.0e-01   0.0e+00   1.6e-01
[ Info:     43   2.0e+02   2.0e-01   0.0e+00   2.2e-01
[ Info:     44   2.0e+02   3.8e-01   0.0e+00   3.8e-01
[ Info:     45   2.0e+02   1.6e-01   0.0e+00   4.5e-01
[ Info:     46   2.0e+02   4.0e-01   0.0e+00   3.3e-01
[ Info:     47   2.0e+02   4.4e-01   0.0e+00   1.4e-01
[ Info:     48   2.0e+02   1.9e-01   0.0e+00   7.7e-02
[ Info:     49   2.0e+02   4.9e-02   0.0e+00   6.7e-02
[ Info:     50   2.0e+02   3.7e-02   0.0e+00   5.9e-02
[ Info:     51   2.0e+02   3.2e-02   0.0e+00   5.5e-02
[ Info:     52   2.0e+02   2.6e-02   0.0e+00   5.1e-02
[ Info:     53   2.0e+02   2.4e-02   0.0e+00   5.1e-02
[ Info:     54   2.0e+02   2.3e-02   0.0e+00   5.2e-02
[ Info:     55   2.0e+02   2.1e-02   0.0e+00   5.2e-02
[ Info:     56   2.0e+02   2.0e-02   0.0e+00   4.0e-02
[ Info:     57   2.0e+02   1.6e-02   0.0e+00   4.3e-02
[ Info:     58   2.0e+02   1.4e-02   0.0e+00   4.5e-02
[ Info:     59   2.0e+02   1.4e-02   0.0e+00   4.7e-02
[ Info:     60   2.0e+02   1.4e-02   0.0e+00   4.6e-02
[ Info:     61   2.0e+02   1.3e-02   0.0e+00   4.6e-02
[ Info:     62   2.0e+02   1.3e-02   0.0e+00   4.4e-02
[ Info:     63   2.0e+02   1.2e-02   0.0e+00   4.2e-02
[ Info:     64   2.0e+02   1.2e-02   0.0e+00   3.8e-02
[ Info:     65   2.0e+02   1.3e-02   0.0e+00   3.5e-02
[ Info:     66   2.0e+02   1.4e-02   0.0e+00   3.2e-02
[ Info:     67   2.0e+02   1.0e-02   0.0e+00   3.5e-02
[ Info:     68   2.0e+02   2.4e-02   0.0e+00   9.5e-02
[ Info:     69   2.0e+02   2.4e-01   0.0e+00   1.8e-01
[ Info:     70   2.0e+02   4.2e-01   0.0e+00   4.8e-01
[ Info:     71   2.0e+02   4.7e-01   0.0e+00   5.4e-01
[ Info:     72   2.0e+02   4.2e-01   0.0e+00   4.6e-01
[ Info:     73   2.0e+02   4.7e-01   0.0e+00   2.0e-01
[ Info:     74   2.0e+02   2.5e-01   0.0e+00   4.5e-02
[ Info:     75   2.0e+02   5.4e-02   0.0e+00   3.5e-02
[ Info:     76   2.0e+02   7.8e-03   0.0e+00   2.2e-02
[ Info:     77   2.0e+02   6.0e-03   0.0e+00   2.2e-02
[ Info:     78   2.0e+02   5.7e-03   0.0e+00   2.2e-02
[ Info:     79   2.0e+02   5.7e-03   0.0e+00   2.3e-02
[ Info:     80   2.0e+02   5.6e-03   0.0e+00   2.4e-02
[ Info:     81   2.0e+02   5.1e-03   0.0e+00   2.5e-02
[ Info:     82   2.0e+02   5.2e-03   0.0e+00   2.6e-02
[ Info:     83   2.0e+02   5.1e-03   0.0e+00   2.8e-02
[ Info:     84   2.0e+02   4.8e-03   0.0e+00   2.9e-02
[ Info:     85   2.0e+02   4.4e-03   0.0e+00   3.0e-02
[ Info:     86   2.0e+02   4.0e-03   0.0e+00   3.0e-02
[ Info:     87   2.0e+02   4.0e-03   0.0e+00   2.9e-02
[ Info:     88   2.0e+02   4.1e-03   0.0e+00   2.8e-02
[ Info:     89   2.0e+02   4.0e-03   0.0e+00   2.5e-02
[ Info:     90   2.0e+02   3.1e-03   0.0e+00   2.3e-02
[ Info:     91   2.0e+02   4.2e-04   0.0e+00   3.6e-02
[ Info:     92   2.0e+02   3.3e-02   0.0e+00   9.0e-02
[ Info:     93   2.0e+02   7.3e-02   0.0e+00   1.7e-01
[ Info:     94   2.0e+02   1.8e-01   0.0e+00   1.6e-01
[ Info:     95   2.0e+02   4.4e-02   0.0e+00   1.9e-01
[ Info:     96   2.0e+02   1.4e-01   0.0e+00   1.0e-01
[ Info:     97   2.0e+02   9.5e-02   0.0e+00   1.9e-02
[ Info:     98   2.0e+02   1.6e-02   0.0e+00   1.9e-02
[ Info:     99   2.0e+02   1.5e-03   0.0e+00   1.4e-02
[ Info:    100   2.0e+02   1.1e-03   0.0e+00   1.4e-02
[ Info:    101   2.0e+02   1.1e-03   0.0e+00   1.4e-02
[ Info:    102   2.0e+02   1.2e-03   0.0e+00   1.5e-02
[ Info:    103   2.0e+02   1.3e-03   0.0e+00   1.5e-02
[ Info:    104   2.0e+02   1.4e-03   0.0e+00   1.4e-02
[ Info:    105   2.0e+02   1.5e-03   0.0e+00   1.4e-02
[ Info:    106   2.0e+02   1.7e-03   0.0e+00   1.4e-02
[ Info:    107   2.0e+02   1.9e-03   0.0e+00   1.4e-02
[ Info:    108   2.0e+02   2.2e-03   0.0e+00   1.4e-02
[ Info:    109   2.0e+02   2.5e-03   0.0e+00   1.5e-02
[ Info:    110   2.0e+02   2.8e-03   0.0e+00   1.5e-02
[ Info:    111   2.0e+02   2.9e-03   0.0e+00   1.5e-02
[ Info:    112   2.0e+02   3.0e-03   0.0e+00   1.9e-02
[ Info:    113   2.0e+02   3.1e-04   0.0e+00   3.2e-02
[ Info:    114   2.0e+02   5.1e-03   0.0e+00   3.7e-02
[ Info:    115   2.0e+02   3.7e-02   0.0e+00   9.3e-02
[ Info:    116   2.0e+02   2.6e-02   0.0e+00   1.2e-01
[ Info:    117   2.0e+02   2.2e-02   0.0e+00   1.5e-01
[ Info:    118   2.0e+02   4.2e-02   0.0e+00   1.6e-01
[ Info:    119   2.0e+02   1.6e-02   0.0e+00   1.6e-01
[ Info:    120   2.0e+02   4.2e-02   0.0e+00   1.0e-01
      sinh: compliance = 196.88, vol = 0.5, gray = 0.46
[ Info:   iter       obj      Δobj  violation  kkt_residual  
[ Info:      0   1.2e+02       Inf   0.0e+00   2.3e-01
[ Info:      1   1.2e+02   6.0e-01   0.0e+00   7.2e-01
[ Info:      2   1.2e+02   5.9e-01   0.0e+00   6.9e-02
[ Info:      3   1.2e+02   6.3e-02   0.0e+00   3.6e-03
[ Info:      4   1.2e+02   4.5e-03   0.0e+00   2.2e-03
[ Info:      5   1.2e+02   1.1e-03   0.0e+00   1.6e-03
[ Info:      6   1.2e+02   6.1e-04   0.0e+00   1.6e-03
[ Info:      7   1.2e+02   4.7e-04   0.0e+00   1.5e-03
[ Info:      8   1.2e+02   3.8e-04   0.0e+00   1.6e-03
[ Info:      9   1.2e+02   2.7e-04   0.0e+00   1.7e-03
[ Info:     10   1.2e+02   2.2e-04   0.0e+00   1.6e-03
[ Info:     11   1.2e+02   1.5e-04   0.0e+00   1.6e-03
[ Info:     12   1.2e+02   1.3e-04   0.0e+00   2.0e-03
[ Info:     13   1.2e+02   1.3e-03   0.0e+00   4.3e-03
[ Info:     14   1.2e+02   1.6e-03   0.0e+00   3.9e-03
[ Info:     15   1.2e+02   1.1e-03   0.0e+00   3.1e-03
[ Info:     16   1.2e+02   1.9e-03   0.0e+00   9.8e-04
[ Info:     17   1.2e+02   5.5e-04   0.0e+00   7.5e-04
[ Info:     18   1.2e+02   6.9e-05   0.0e+00   6.0e-04
[ Info:     19   1.2e+02   1.7e-05   0.0e+00   6.0e-04
[ Info:     20   1.2e+02   1.1e-05   0.0e+00   6.9e-04
[ Info:     21   1.2e+02   3.6e-05   0.0e+00   3.9e-04
[ Info:     22   1.2e+02   3.8e-05   0.0e+00   4.8e-04
[ Info:     23   1.2e+02   2.8e-05   0.0e+00   4.3e-04
[ Info:     24   1.2e+02   2.6e-05   0.0e+00   4.1e-04
[ Info:     25   1.2e+02   2.6e-05   0.0e+00   4.0e-04
[ Info:     26   1.2e+02   3.4e-05   0.0e+00   4.0e-04
[ Info:     27   1.2e+02   4.5e-05   0.0e+00   4.5e-04
[ Info:     28   1.2e+02   4.2e-05   0.0e+00   4.6e-04
[ Info:     29   1.2e+02   3.9e-05   0.0e+00   5.3e-04
[ Info:     30   1.2e+02   2.3e-05   0.0e+00   7.4e-04
[ Info:     31   1.2e+02   5.4e-05   0.0e+00   1.4e-03
[ Info:     32   1.2e+02   1.9e-04   0.0e+00   1.5e-03
[ Info:     33   1.2e+02   8.3e-05   0.0e+00   1.8e-03
[ Info:     34   1.2e+02   1.7e-04   0.0e+00   1.5e-03
[ Info:     35   1.2e+02   2.3e-04   0.0e+00   7.5e-04
[ Info:     36   1.2e+02   8.8e-05   0.0e+00   3.9e-04
[ Info:     37   1.2e+02   1.9e-05   0.0e+00   3.7e-04
[ Info:     38   1.2e+02   8.6e-06   0.0e+00   3.6e-04
[ Info:     39   1.2e+02   8.9e-06   0.0e+00   3.5e-04
[ Info:     40   1.2e+02   9.9e-06   0.0e+00   3.4e-04
[ Info:     41   1.2e+02   1.1e-05   0.0e+00   3.3e-04
[ Info:     42   1.2e+02   1.2e-05   0.0e+00   3.2e-04
[ Info:     43   1.2e+02   1.3e-05   0.0e+00   3.1e-04
[ Info:     44   1.2e+02   1.5e-05   0.0e+00   3.0e-04
[ Info:     45   1.2e+02   1.6e-05   0.0e+00   2.8e-04
[ Info:     46   1.2e+02   6.3e-06   0.0e+00   4.6e-04
[ Info:     47   1.2e+02   1.7e-04   0.0e+00   1.6e-03
[ Info:     48   1.2e+02   2.1e-03   0.0e+00   7.1e-03
[ Info:     49   1.2e+02   4.6e-03   0.0e+00   5.4e-03
[ Info:     50   1.2e+02   1.1e-02   0.0e+00   1.6e-02
[ Info:     51   1.2e+02   3.4e-03   0.0e+00   2.2e-02
[ Info:     52   1.2e+02   7.9e-04   0.0e+00   1.2e-02
[ Info:     53   1.2e+02   1.4e-02   0.0e+00   6.7e-03
[ Info:     54   1.2e+02   5.4e-03   0.0e+00   3.1e-03
[ Info:     55   1.2e+02   8.3e-04   0.0e+00   5.7e-04
[ Info:     56   1.2e+02   9.7e-05   0.0e+00   4.5e-04
[ Info:     57   1.2e+02   1.9e-05   0.0e+00   4.8e-04
[ Info:     58   1.2e+02   1.8e-05   0.0e+00   5.0e-04
[ Info:     59   1.2e+02   1.8e-05   0.0e+00   4.9e-04
[ Info:     60   1.2e+02   1.8e-05   0.0e+00   4.7e-04
[ Info:     61   1.2e+02   1.8e-05   0.0e+00   4.5e-04
[ Info:     62   1.2e+02   1.9e-05   0.0e+00   4.3e-04
[ Info:     63   1.2e+02   1.9e-05   0.0e+00   2.9e-04
[ Info:     64   1.2e+02   1.5e-05   0.0e+00   2.5e-04
[ Info:     65   1.2e+02   1.3e-05   0.0e+00   2.6e-04
[ Info:     66   1.2e+02   1.4e-05   0.0e+00   2.6e-04
[ Info:     67   1.2e+02   1.5e-05   0.0e+00   2.5e-04
[ Info:     68   1.2e+02   1.7e-05   0.0e+00   2.3e-04
[ Info:     69   1.2e+02   1.9e-05   0.0e+00   2.3e-04
[ Info:     70   1.2e+02   2.1e-05   0.0e+00   2.4e-04
[ Info:     71   1.2e+02   1.5e-05   0.0e+00   3.4e-04
[ Info:     72   1.2e+02   1.0e-05   0.0e+00   7.0e-04
[ Info:     73   1.2e+02   7.0e-04   0.0e+00   4.2e-03
[ Info:     74   1.2e+02   3.4e-03   0.0e+00   4.5e-03
[ Info:     75   1.2e+02   8.9e-02   0.0e+00   8.2e-02
[ Info:     76   1.2e+02   3.8e-02   0.0e+00   6.0e-02
[ Info:     77   1.2e+02   2.8e-01   0.0e+00   3.8e-01
[ Info:     78   1.2e+02   1.4e-01   0.0e+00   2.6e-01
[ Info:     79   1.2e+02   1.9e-01   0.0e+00   5.9e-02
[ Info:     80   1.2e+02   7.0e-02   0.0e+00   1.2e-02
[ Info:     81   1.2e+02   1.5e-02   0.0e+00   2.6e-03
[ Info:     82   1.2e+02   2.4e-03   0.0e+00   1.8e-03
[ Info:     83   1.2e+02   5.5e-04   0.0e+00   1.2e-03
[ Info:     84   1.2e+02   1.8e-04   0.0e+00   1.1e-03
[ Info:     85   1.2e+02   1.1e-04   0.0e+00   1.0e-03
[ Info:     86   1.2e+02   8.5e-05   0.0e+00   9.4e-04
[ Info:     87   1.2e+02   7.3e-05   0.0e+00   8.5e-04
[ Info:     88   1.2e+02   6.7e-05   0.0e+00   7.6e-04
[ Info:     89   1.2e+02   6.4e-05   0.0e+00   6.8e-04
[ Info:     90   1.2e+02   6.3e-05   0.0e+00   5.9e-04
[ Info:     91   1.2e+02   6.4e-05   0.0e+00   5.5e-04
[ Info:     92   1.2e+02   6.5e-05   0.0e+00   5.1e-04
[ Info:     93   1.2e+02   5.4e-05   0.0e+00   5.0e-04
[ Info:     94   1.2e+02   4.7e-05   0.0e+00   4.1e-04
[ Info:     95   1.2e+02   1.1e-05   0.0e+00   7.7e-04
[ Info:     96   1.2e+02   2.2e-04   0.0e+00   1.9e-03
[ Info:     97   1.2e+02   1.1e-03   0.0e+00   3.2e-03
[ Info:     98   1.2e+02   4.4e-03   0.0e+00   7.7e-03
[ Info:     99   1.2e+02   3.4e-02   0.0e+00   3.5e-02
[ Info:    100   1.2e+02   3.7e-02   0.0e+00   3.4e-02
[ Info:    101   1.2e+02   4.2e-02   0.0e+00   6.8e-02
[ Info:    102   1.2e+02   4.5e-02   0.0e+00   4.6e-02
[ Info:    103   1.2e+02   4.1e-02   0.0e+00   2.3e-02
[ Info:    104   1.2e+02   2.6e-02   0.0e+00   5.5e-03
[ Info:    105   1.2e+02   5.8e-03   0.0e+00   1.1e-03
[ Info:    106   1.2e+02   2.3e-04   0.0e+00   1.0e-03
[ Info:    107   1.2e+02   4.8e-05   0.0e+00   9.4e-04
[ Info:    108   1.2e+02   3.4e-05   0.0e+00   5.2e-04
[ Info:    109   1.2e+02   2.4e-05   0.0e+00   5.3e-04
[ Info:    110   1.2e+02   2.1e-05   0.0e+00   4.9e-04
[ Info:    111   1.2e+02   1.9e-05   0.0e+00   4.6e-04
[ Info:    112   1.2e+02   1.9e-05   0.0e+00   2.9e-04
[ Info:    113   1.2e+02   2.0e-05   0.0e+00   2.9e-04
[ Info:    114   1.2e+02   2.2e-05   0.0e+00   2.7e-04
[ Info:    115   1.2e+02   2.4e-05   0.0e+00   2.8e-04
[ Info:    116   1.2e+02   2.4e-05   0.0e+00   2.8e-04
[ Info:    117   1.2e+02   3.0e-05   0.0e+00   1.0e-03
[ Info:    118   1.2e+02   4.4e-04   0.0e+00   3.2e-03
[ Info:    119   1.2e+02   2.6e-03   0.0e+00   4.5e-03
[ Info:    120   1.2e+02   4.9e-03   0.0e+00   8.6e-03
 projected: compliance = 115.59, vol = 0.5, gray = 0.988
fig_p = visualize(problem; static=true, topology=results["power"])
display_app(fig_p)
undeformed mesh
load arrows
support arrows
Figure 2: PowerPenaltyFun(p=3): standard SIMP result
fig_proj = visualize(problem; static=true, topology=results["projected"])
display_app(fig_proj)
undeformed mesh
load arrows
support arrows
Figure 3: ProjectedPenaltyFun: near-binary design

The power, rational, and sinh penalties produce comparable topologies with varying amounts of gray; the projected penalty produces a noticeably crisper design.

Parameter sensitivity

Ramping the exponent of the power-law penalty trades stiffness for binary crispness. We sweep p and report the grayness and final compliance.

for p in (2.0, 3.0, 4.0, 5.0)
    c, vol, g, _ = solve_with(PowerPenaltyFun(p))
    println("p=$p: compliance = $(round(c, digits=2)), gray = $(round(g, digits=3))")
end
[ Info:   iter       obj      Δobj  violation  kkt_residual  
[ Info:      0   4.6e+02       Inf   0.0e+00   1.7e+01
[ Info:      1   3.4e+02   1.2e+02   0.0e+00   5.5e+01
[ Info:      2   2.6e+02   7.6e+01   0.0e+00   1.3e+01
[ Info:      3   2.3e+02   2.7e+01   0.0e+00   4.6e+00
[ Info:      4   2.2e+02   1.0e+01   0.0e+00   2.0e+00
[ Info:      5   2.2e+02   4.9e+00   0.0e+00   1.0e+00
[ Info:      6   2.2e+02   2.9e+00   0.0e+00   6.6e-01
[ Info:      7   2.1e+02   2.1e+00   0.0e+00   5.1e-01
[ Info:      8   2.1e+02   1.9e+00   0.0e+00   4.7e-01
[ Info:      9   2.1e+02   1.7e+00   0.0e+00   4.1e-01
[ Info:     10   2.1e+02   1.6e+00   0.0e+00   3.4e-01
[ Info:     11   2.1e+02   1.3e+00   0.0e+00   3.0e-01
[ Info:     12   2.1e+02   1.1e+00   0.0e+00   2.5e-01
[ Info:     13   2.0e+02   7.8e-01   0.0e+00   1.9e-01
[ Info:     14   2.0e+02   5.8e-01   0.0e+00   2.0e-01
[ Info:     15   2.0e+02   1.4e-02   0.0e+00   4.4e-01
[ Info:     16   2.0e+02   8.0e-01   0.0e+00   8.2e-01
[ Info:     17   2.1e+02   1.3e-01   0.0e+00   1.2e+00
[ Info:     18   2.0e+02   1.2e+00   0.0e+00   1.1e+00
[ Info:     19   2.0e+02   1.4e+00   0.0e+00   3.2e-01
[ Info:     20   2.0e+02   4.5e-01   0.0e+00   9.9e-02
[ Info:     21   2.0e+02   1.4e-01   0.0e+00   1.0e-01
[ Info:     22   2.0e+02   1.1e-01   0.0e+00   9.7e-02
[ Info:     23   2.0e+02   1.1e-01   0.0e+00   9.8e-02
[ Info:     24   2.0e+02   1.1e-01   0.0e+00   1.1e-01
[ Info:     25   2.0e+02   1.2e-01   0.0e+00   1.1e-01
[ Info:     26   2.0e+02   1.5e-01   0.0e+00   1.2e-01
[ Info:     27   2.0e+02   1.8e-01   0.0e+00   1.2e-01
[ Info:     28   2.0e+02   2.3e-01   0.0e+00   1.2e-01
[ Info:     29   2.0e+02   2.9e-01   0.0e+00   9.9e-02
[ Info:     30   2.0e+02   3.4e-01   0.0e+00   1.1e-01
[ Info:     31   2.0e+02   3.7e-01   0.0e+00   1.3e-01
[ Info:     32   2.0e+02   3.9e-01   0.0e+00   1.2e-01
[ Info:     33   2.0e+02   3.4e-01   0.0e+00   1.6e-01
[ Info:     34   2.0e+02   2.8e-01   0.0e+00   2.3e-01
[ Info:     35   2.0e+02   1.7e-01   0.0e+00   3.7e-01
[ Info:     36   2.0e+02   4.5e-01   0.0e+00   3.8e-01
[ Info:     37   2.0e+02   5.6e-01   0.0e+00   2.4e-01
[ Info:     38   2.0e+02   4.1e-01   0.0e+00   2.0e-01
[ Info:     39   2.0e+02   2.4e-01   0.0e+00   2.1e-01
[ Info:     40   2.0e+02   1.7e-01   0.0e+00   2.2e-01
[ Info:     41   2.0e+02   1.6e-01   0.0e+00   1.5e-01
[ Info:     42   2.0e+02   1.3e-01   0.0e+00   1.7e-01
[ Info:     43   2.0e+02   1.3e-01   0.0e+00   1.8e-01
[ Info:     44   2.0e+02   1.3e-01   0.0e+00   1.3e-01
[ Info:     45   2.0e+02   1.3e-01   0.0e+00   1.4e-01
[ Info:     46   2.0e+02   1.3e-01   0.0e+00   1.3e-01
[ Info:     47   2.0e+02   1.3e-01   0.0e+00   1.4e-01
[ Info:     48   2.0e+02   1.4e-01   0.0e+00   1.5e-01
[ Info:     49   2.0e+02   1.8e-01   0.0e+00   1.8e-01
[ Info:     50   2.0e+02   2.2e-01   0.0e+00   2.1e-01
[ Info:     51   2.0e+02   3.0e-01   0.0e+00   3.4e-01
[ Info:     52   1.9e+02   2.3e-01   0.0e+00   1.4e-01
[ Info:     53   1.9e+02   1.5e-01   0.0e+00   1.7e-01
[ Info:     54   1.9e+02   6.8e-02   0.0e+00   1.6e-01
[ Info:     55   1.9e+02   1.6e-01   0.0e+00   1.5e-01
[ Info:     56   1.9e+02   2.3e-01   0.0e+00   1.7e-01
[ Info:     57   1.9e+02   3.4e-01   0.0e+00   1.5e-01
[ Info:     58   1.9e+02   2.7e-01   0.0e+00   2.3e-01
[ Info:     59   1.9e+02   2.0e-01   0.0e+00   2.3e-01
[ Info:     60   1.9e+02   1.3e-01   0.0e+00   2.0e-01
[ Info:     61   1.9e+02   1.0e-01   0.0e+00   2.2e-01
[ Info:     62   1.9e+02   9.2e-02   0.0e+00   1.6e-01
[ Info:     63   1.9e+02   8.7e-02   0.0e+00   1.7e-01
[ Info:     64   1.9e+02   9.7e-02   0.0e+00   1.8e-01
[ Info:     65   1.9e+02   1.1e-01   0.0e+00   1.9e-01
[ Info:     66   1.9e+02   1.0e-01   0.0e+00   2.1e-01
[ Info:     67   1.9e+02   1.1e-01   0.0e+00   2.6e-01
[ Info:     68   1.9e+02   1.0e-01   0.0e+00   2.0e-01
[ Info:     69   1.9e+02   8.0e-02   0.0e+00   2.1e-01
[ Info:     70   1.9e+02   7.0e-02   0.0e+00   2.2e-01
[ Info:     71   1.9e+02   6.0e-02   0.0e+00   2.3e-01
[ Info:     72   1.9e+02   5.3e-02   0.0e+00   2.5e-01
[ Info:     73   1.9e+02   6.2e-02   0.0e+00   2.9e-01
[ Info:     74   1.9e+02   5.1e-02   0.0e+00   8.6e-02
[ Info:     75   1.9e+02   4.1e-02   0.0e+00   9.0e-02
[ Info:     76   1.9e+02   3.2e-02   0.0e+00   8.9e-02
[ Info:     77   1.9e+02   2.9e-02   0.0e+00   9.8e-02
[ Info:     78   1.9e+02   2.5e-02   0.0e+00   8.8e-02
[ Info:     79   1.9e+02   2.3e-02   0.0e+00   9.1e-02
[ Info:     80   1.9e+02   2.4e-02   0.0e+00   9.5e-02
[ Info:     81   1.9e+02   2.3e-02   0.0e+00   3.7e-02
[ Info:     82   1.9e+02   1.8e-02   0.0e+00   3.6e-02
[ Info:     83   1.9e+02   1.8e-02   0.0e+00   3.8e-02
[ Info:     84   1.9e+02   1.7e-02   0.0e+00   4.1e-02
[ Info:     85   1.9e+02   1.5e-02   0.0e+00   4.6e-02
[ Info:     86   1.9e+02   1.2e-02   0.0e+00   4.7e-02
[ Info:     87   1.9e+02   1.1e-02   0.0e+00   5.1e-02
[ Info:     88   1.9e+02   1.2e-02   0.0e+00   5.3e-02
[ Info:     89   1.9e+02   9.8e-03   0.0e+00   4.8e-02
[ Info:     90   1.9e+02   6.4e-03   0.0e+00   4.9e-02
[ Info:     91   1.9e+02   6.6e-03   0.0e+00   4.9e-02
[ Info:     92   1.9e+02   6.6e-03   0.0e+00   4.7e-02
[ Info:     93   1.9e+02   6.6e-03   0.0e+00   4.7e-02
[ Info:     94   1.9e+02   6.4e-03   0.0e+00   1.7e-02
[ Info:     95   1.9e+02   4.3e-03   0.0e+00   1.4e-02
[ Info:     96   1.9e+02   3.7e-03   0.0e+00   1.0e-02
[ Info:     97   1.9e+02   3.7e-03   0.0e+00   9.5e-03
[ Info:     98   1.9e+02   3.4e-03   0.0e+00   6.9e-03
[ Info:     99   1.9e+02   3.3e-03   0.0e+00   8.5e-03
[ Info:    100   1.9e+02   3.4e-03   0.0e+00   9.3e-03
[ Info:    101   1.9e+02   3.6e-03   0.0e+00   1.0e-02
[ Info:    102   1.9e+02   3.4e-03   0.0e+00   1.2e-02
[ Info:    103   1.9e+02   2.4e-03   0.0e+00   2.1e-02
[ Info:    104   1.9e+02   1.7e-03   0.0e+00   2.7e-02
[ Info:    105   1.9e+02   3.5e-03   0.0e+00   3.2e-02
[ Info:    106   1.9e+02   7.0e-03   0.0e+00   2.2e-02
[ Info:    107   1.9e+02   5.7e-03   0.0e+00   9.1e-03
[ Info:    108   1.9e+02   2.6e-03   0.0e+00   1.1e-02
[ Info:    109   1.9e+02   1.9e-03   0.0e+00   1.2e-02
[ Info:    110   1.9e+02   1.8e-03   0.0e+00   1.3e-02
[ Info:    111   1.9e+02   1.7e-03   0.0e+00   1.3e-02
[ Info:    112   1.9e+02   1.6e-03   0.0e+00   1.3e-02
[ Info:    113   1.9e+02   1.7e-03   0.0e+00   1.3e-02
[ Info:    114   1.9e+02   1.7e-03   0.0e+00   1.3e-02
[ Info:    115   1.9e+02   1.9e-03   0.0e+00   1.3e-02
[ Info:    116   1.9e+02   2.0e-03   0.0e+00   1.3e-02
[ Info:    117   1.9e+02   2.1e-03   0.0e+00   1.3e-02
[ Info:    118   1.9e+02   2.2e-03   0.0e+00   1.3e-02
[ Info:    119   1.9e+02   2.1e-03   0.0e+00   1.2e-02
[ Info:    120   1.9e+02   2.0e-03   0.0e+00   1.1e-02
p=2.0: compliance = 191.79, gray = 0.468
[ Info:   iter       obj      Δobj  violation  kkt_residual  
[ Info:      0   9.1e+02       Inf   0.0e+00   5.2e+01
[ Info:      1   6.2e+02   2.9e+02   0.0e+00   1.6e+02
[ Info:      2   4.3e+02   1.9e+02   0.0e+00   3.7e+01
[ Info:      3   3.6e+02   6.6e+01   0.0e+00   1.3e+01
[ Info:      4   3.3e+02   2.7e+01   0.0e+00   5.8e+00
[ Info:      5   3.2e+02   1.6e+01   0.0e+00   3.4e+00
[ Info:      6   3.1e+02   1.1e+01   0.0e+00   2.6e+00
[ Info:      7   3.0e+02   8.8e+00   0.0e+00   2.2e+00
[ Info:      8   2.9e+02   7.5e+00   0.0e+00   1.8e+00
[ Info:      9   2.8e+02   6.5e+00   0.0e+00   1.6e+00
[ Info:     10   2.8e+02   6.0e+00   0.0e+00   1.4e+00
[ Info:     11   2.7e+02   6.0e+00   0.0e+00   1.4e+00
[ Info:     12   2.6e+02   7.4e+00   0.0e+00   1.6e+00
[ Info:     13   2.5e+02   9.3e+00   0.0e+00   2.1e+00
[ Info:     14   2.4e+02   1.1e+01   0.0e+00   2.3e+00
[ Info:     15   2.3e+02   1.0e+01   0.0e+00   2.1e+00
[ Info:     16   2.2e+02   8.1e+00   0.0e+00   1.4e+00
[ Info:     17   2.2e+02   4.5e+00   0.0e+00   7.6e-01
[ Info:     18   2.2e+02   2.4e+00   0.0e+00   4.7e-01
[ Info:     19   2.2e+02   1.5e+00   0.0e+00   4.3e-01
[ Info:     20   2.1e+02   9.8e-01   0.0e+00   2.7e-01
[ Info:     21   2.1e+02   6.6e-01   0.0e+00   2.8e-01
[ Info:     22   2.1e+02   5.2e-01   0.0e+00   2.8e-01
[ Info:     23   2.1e+02   4.8e-01   0.0e+00   2.4e-01
[ Info:     24   2.1e+02   5.0e-01   0.0e+00   2.1e-01
[ Info:     25   2.1e+02   4.6e-01   0.0e+00   1.6e-01
[ Info:     26   2.1e+02   2.7e-01   0.0e+00   1.0e-01
[ Info:     27   2.1e+02   1.1e-01   0.0e+00   9.2e-02
[ Info:     28   2.1e+02   6.0e-02   0.0e+00   6.1e-02
[ Info:     29   2.1e+02   3.4e-02   0.0e+00   6.5e-02
[ Info:     30   2.1e+02   2.4e-02   0.0e+00   6.7e-02
[ Info:     31   2.1e+02   2.0e-02   0.0e+00   6.7e-02
[ Info:     32   2.1e+02   1.6e-02   0.0e+00   6.3e-02
[ Info:     33   2.1e+02   1.6e-02   0.0e+00   6.1e-02
[ Info:     34   2.1e+02   1.6e-02   0.0e+00   6.0e-02
[ Info:     35   2.1e+02   1.7e-02   0.0e+00   5.9e-02
[ Info:     36   2.1e+02   1.4e-02   0.0e+00   1.5e-02
[ Info:     37   2.1e+02   8.4e-03   0.0e+00   1.3e-02
[ Info:     38   2.1e+02   6.6e-03   0.0e+00   1.3e-02
[ Info:     39   2.1e+02   5.5e-03   0.0e+00   1.3e-02
[ Info:     40   2.1e+02   4.4e-03   0.0e+00   9.6e-03
[ Info:     41   2.1e+02   2.8e-03   0.0e+00   8.0e-03
[ Info:     42   2.1e+02   2.0e-03   0.0e+00   6.5e-03
[ Info:     43   2.1e+02   1.3e-03   0.0e+00   6.4e-03
[ Info:     44   2.1e+02   1.1e-03   0.0e+00   5.9e-03
[ Info:     45   2.1e+02   1.0e-03   0.0e+00   5.9e-03
[ Info:     46   2.1e+02   1.0e-03   0.0e+00   5.4e-03
[ Info:     47   2.1e+02   9.6e-04   0.0e+00   5.4e-03
[ Info:     48   2.1e+02   9.1e-04   0.0e+00   5.3e-03
[ Info:     49   2.1e+02   8.7e-04   0.0e+00   5.2e-03
[ Info:     50   2.1e+02   8.5e-04   0.0e+00   5.1e-03
[ Info:     51   2.1e+02   8.2e-04   0.0e+00   5.0e-03
[ Info:     52   2.1e+02   8.0e-04   0.0e+00   4.9e-03
[ Info:     53   2.1e+02   7.7e-04   0.0e+00   4.8e-03
[ Info:     54   2.1e+02   6.5e-04   0.0e+00   4.1e-03
[ Info:     55   2.1e+02   5.6e-04   0.0e+00   3.9e-03
[ Info:     56   2.1e+02   4.8e-04   0.0e+00   3.5e-03
[ Info:     57   2.1e+02   4.2e-04   0.0e+00   3.5e-03
[ Info:     58   2.1e+02   3.7e-04   0.0e+00   3.2e-03
[ Info:     59   2.1e+02   3.2e-04   0.0e+00   3.9e-03
[ Info:     60   2.1e+02   2.8e-04   0.0e+00   4.0e-03
[ Info:     61   2.1e+02   2.4e-04   0.0e+00   4.4e-03
[ Info:     62   2.1e+02   2.1e-04   0.0e+00   4.6e-03
[ Info:     63   2.1e+02   1.6e-04   0.0e+00   4.1e-03
[ Info:     64   2.1e+02   1.3e-04   0.0e+00   2.8e-03
[ Info:     65   2.1e+02   8.8e-05   0.0e+00   2.6e-03
[ Info:     66   2.1e+02   6.6e-05   0.0e+00   1.7e-03
[ Info:     67   2.1e+02   5.9e-05   0.0e+00   1.7e-03
[ Info:     68   2.1e+02   5.9e-05   0.0e+00   1.7e-03
[ Info:     69   2.1e+02   6.0e-05   0.0e+00   1.7e-03
[ Info:     70   2.1e+02   6.0e-05   0.0e+00   1.7e-03
[ Info:     71   2.1e+02   6.0e-05   0.0e+00   1.7e-03
[ Info:     72   2.1e+02   5.9e-05   0.0e+00   1.7e-03
[ Info:     73   2.1e+02   5.8e-05   0.0e+00   1.7e-03
[ Info:     74   2.1e+02   5.6e-05   0.0e+00   1.6e-03
[ Info:     75   2.1e+02   5.5e-05   0.0e+00   1.6e-03
[ Info:     76   2.1e+02   5.3e-05   0.0e+00   1.6e-03
[ Info:     77   2.1e+02   5.1e-05   0.0e+00   1.6e-03
[ Info:     78   2.1e+02   4.5e-05   0.0e+00   1.4e-03
[ Info:     79   2.1e+02   4.1e-05   0.0e+00   1.5e-03
[ Info:     80   2.1e+02   3.7e-05   0.0e+00   1.4e-03
[ Info:     81   2.1e+02   3.4e-05   0.0e+00   1.6e-03
[ Info:     82   2.1e+02   3.1e-05   0.0e+00   1.3e-03
[ Info:     83   2.1e+02   2.9e-05   0.0e+00   1.6e-03
[ Info:     84   2.1e+02   2.7e-05   0.0e+00   1.2e-03
[ Info:     85   2.1e+02   2.5e-05   0.0e+00   1.8e-03
[ Info:     86   2.1e+02   2.3e-05   0.0e+00   1.4e-03
[ Info:     87   2.1e+02   2.2e-05   0.0e+00   2.0e-03
[ Info:     88   2.1e+02   2.1e-05   0.0e+00   1.5e-03
[ Info:     89   2.1e+02   2.0e-05   0.0e+00   2.0e-03
[ Info:     90   2.1e+02   2.0e-05   0.0e+00   1.4e-03
[ Info:     91   2.1e+02   1.9e-05   0.0e+00   1.7e-03
[ Info:     92   2.1e+02   1.5e-05   0.0e+00   9.5e-04
[ Info:     93   2.1e+02   7.6e-06   0.0e+00   1.0e-03
[ Info:     94   2.1e+02   3.6e-06   0.0e+00   1.0e-03
[ Info:     95   2.1e+02   3.2e-06   0.0e+00   9.9e-04
[ Info:     96   2.1e+02   3.1e-06   0.0e+00   9.3e-04
[ Info:     97   2.1e+02   3.2e-06   0.0e+00   8.6e-04
[ Info:     98   2.1e+02   3.2e-06   0.0e+00   7.8e-04
[ Info:     99   2.1e+02   3.2e-06   0.0e+00   7.1e-04
[ Info:    100   2.1e+02   3.2e-06   0.0e+00   6.3e-04
[ Info:    101   2.1e+02   3.2e-06   0.0e+00   5.6e-04
[ Info:    102   2.1e+02   3.2e-06   0.0e+00   4.9e-04
[ Info:    103   2.1e+02   3.1e-06   0.0e+00   4.3e-04
[ Info:    104   2.1e+02   3.0e-06   0.0e+00   3.8e-04
[ Info:    105   2.1e+02   2.7e-06   0.0e+00   3.6e-04
[ Info:    106   2.1e+02   2.4e-06   0.0e+00   3.2e-04
[ Info:    107   2.1e+02   2.1e-06   0.0e+00   3.0e-04
[ Info:    108   2.1e+02   1.8e-06   0.0e+00   2.6e-04
[ Info:    109   2.1e+02   1.6e-06   0.0e+00   2.5e-04
[ Info:    110   2.1e+02   1.5e-06   0.0e+00   2.2e-04
[ Info:    111   2.1e+02   1.3e-06   0.0e+00   2.0e-04
[ Info:    112   2.1e+02   1.2e-06   0.0e+00   1.8e-04
[ Info:    113   2.1e+02   1.1e-06   0.0e+00   1.7e-04
[ Info:    114   2.1e+02   1.0e-06   0.0e+00   1.7e-04
[ Info:    115   2.1e+02   9.4e-07   0.0e+00   1.6e-04
[ Info:    116   2.1e+02   8.7e-07   0.0e+00   1.6e-04
[ Info:    117   2.1e+02   8.1e-07   0.0e+00   1.6e-04
[ Info:    118   2.1e+02   7.6e-07   0.0e+00   1.5e-04
[ Info:    119   2.1e+02   7.1e-07   0.0e+00   1.5e-04
[ Info:    120   2.1e+02   6.7e-07   0.0e+00   1.4e-04
p=3.0: compliance = 211.73, gray = 0.381
[ Info:   iter       obj      Δobj  violation  kkt_residual  
[ Info:      0   1.8e+03       Inf   0.0e+00   1.4e+02
[ Info:      1   1.2e+03   6.2e+02   0.0e+00   4.3e+02
[ Info:      2   7.2e+02   4.6e+02   0.0e+00   1.1e+02
[ Info:      3   5.6e+02   1.6e+02   0.0e+00   3.3e+01
[ Info:      4   5.0e+02   6.8e+01   0.0e+00   1.5e+01
[ Info:      5   4.6e+02   4.0e+01   0.0e+00   9.0e+00
[ Info:      6   4.3e+02   2.9e+01   0.0e+00   7.2e+00
[ Info:      7   4.0e+02   2.5e+01   0.0e+00   6.4e+00
[ Info:      8   3.8e+02   2.3e+01   0.0e+00   5.9e+00
[ Info:      9   3.5e+02   2.5e+01   0.0e+00   6.3e+00
[ Info:     10   3.2e+02   2.9e+01   0.0e+00   7.3e+00
[ Info:     11   2.9e+02   3.2e+01   0.0e+00   7.9e+00
[ Info:     12   2.7e+02   2.5e+01   0.0e+00   5.4e+00
[ Info:     13   2.5e+02   1.5e+01   0.0e+00   2.8e+00
[ Info:     14   2.4e+02   9.4e+00   0.0e+00   1.7e+00
[ Info:     15   2.4e+02   5.7e+00   0.0e+00   7.8e-01
[ Info:     16   2.4e+02   1.9e+00   0.0e+00   3.8e-01
[ Info:     17   2.3e+02   1.2e+00   0.0e+00   3.5e-01
[ Info:     18   2.3e+02   8.4e-01   0.0e+00   3.2e-01
[ Info:     19   2.3e+02   6.4e-01   0.0e+00   2.2e-01
[ Info:     20   2.3e+02   5.6e-01   0.0e+00   2.2e-01
[ Info:     21   2.3e+02   4.7e-01   0.0e+00   1.7e-01
[ Info:     22   2.3e+02   4.0e-01   0.0e+00   1.7e-01
[ Info:     23   2.3e+02   4.4e-01   0.0e+00   1.6e-01
[ Info:     24   2.3e+02   4.2e-01   0.0e+00   1.8e-01
[ Info:     25   2.3e+02   3.2e-01   0.0e+00   9.7e-02
[ Info:     26   2.3e+02   1.8e-01   0.0e+00   8.3e-02
[ Info:     27   2.3e+02   1.2e-01   0.0e+00   8.9e-02
[ Info:     28   2.3e+02   1.1e-01   0.0e+00   8.8e-02
[ Info:     29   2.3e+02   1.1e-01   0.0e+00   9.0e-02
[ Info:     30   2.3e+02   1.1e-01   0.0e+00   1.0e-01
[ Info:     31   2.3e+02   1.2e-01   0.0e+00   1.0e-01
[ Info:     32   2.3e+02   1.2e-01   0.0e+00   1.0e-01
[ Info:     33   2.3e+02   9.3e-02   0.0e+00   8.6e-02
[ Info:     34   2.3e+02   7.7e-02   0.0e+00   7.8e-02
[ Info:     35   2.3e+02   7.3e-02   0.0e+00   8.6e-02
[ Info:     36   2.3e+02   8.8e-02   0.0e+00   1.1e-01
[ Info:     37   2.3e+02   1.4e-01   0.0e+00   1.3e-01
[ Info:     38   2.3e+02   2.4e-01   0.0e+00   1.6e-01
[ Info:     39   2.3e+02   3.2e-01   0.0e+00   1.4e-01
[ Info:     40   2.3e+02   2.6e-01   0.0e+00   9.7e-02
[ Info:     41   2.3e+02   1.0e-01   0.0e+00   5.7e-02
[ Info:     42   2.3e+02   3.8e-02   0.0e+00   4.8e-02
[ Info:     43   2.3e+02   2.4e-02   0.0e+00   3.9e-02
[ Info:     44   2.3e+02   1.7e-02   0.0e+00   3.8e-02
[ Info:     45   2.3e+02   1.3e-02   0.0e+00   3.9e-02
[ Info:     46   2.3e+02   8.9e-03   0.0e+00   3.1e-02
[ Info:     47   2.3e+02   6.6e-03   0.0e+00   2.8e-02
[ Info:     48   2.3e+02   5.6e-03   0.0e+00   3.3e-02
[ Info:     49   2.3e+02   5.1e-03   0.0e+00   3.5e-02
[ Info:     50   2.3e+02   4.9e-03   0.0e+00   3.4e-02
[ Info:     51   2.3e+02   4.9e-03   0.0e+00   3.1e-02
[ Info:     52   2.3e+02   4.9e-03   0.0e+00   2.6e-02
[ Info:     53   2.3e+02   4.8e-03   0.0e+00   2.2e-02
[ Info:     54   2.3e+02   4.6e-03   0.0e+00   1.7e-02
[ Info:     55   2.3e+02   4.2e-03   0.0e+00   1.5e-02
[ Info:     56   2.3e+02   3.7e-03   0.0e+00   1.3e-02
[ Info:     57   2.3e+02   2.7e-03   0.0e+00   1.1e-02
[ Info:     58   2.3e+02   2.0e-03   0.0e+00   1.2e-02
[ Info:     59   2.3e+02   1.6e-03   0.0e+00   1.2e-02
[ Info:     60   2.3e+02   1.5e-03   0.0e+00   1.1e-02
[ Info:     61   2.3e+02   1.5e-03   0.0e+00   9.5e-03
[ Info:     62   2.3e+02   1.6e-03   0.0e+00   9.5e-03
[ Info:     63   2.3e+02   1.7e-03   0.0e+00   1.1e-02
[ Info:     64   2.3e+02   1.8e-03   0.0e+00   1.1e-02
[ Info:     65   2.3e+02   1.6e-03   0.0e+00   1.1e-02
[ Info:     66   2.3e+02   1.4e-03   0.0e+00   8.8e-03
[ Info:     67   2.3e+02   1.4e-03   0.0e+00   1.0e-02
[ Info:     68   2.3e+02   1.5e-03   0.0e+00   1.3e-02
[ Info:     69   2.3e+02   1.8e-03   0.0e+00   1.4e-02
[ Info:     70   2.3e+02   2.1e-03   0.0e+00   1.6e-02
[ Info:     71   2.3e+02   2.7e-03   0.0e+00   1.6e-02
[ Info:     72   2.3e+02   3.4e-03   0.0e+00   1.6e-02
[ Info:     73   2.3e+02   4.3e-03   0.0e+00   1.6e-02
[ Info:     74   2.3e+02   5.2e-03   0.0e+00   1.6e-02
[ Info:     75   2.3e+02   6.4e-03   0.0e+00   1.7e-02
[ Info:     76   2.3e+02   7.9e-03   0.0e+00   1.9e-02
[ Info:     77   2.3e+02   1.0e-02   0.0e+00   2.3e-02
[ Info:     78   2.3e+02   1.4e-02   0.0e+00   2.8e-02
[ Info:     79   2.3e+02   1.9e-02   0.0e+00   2.9e-02
[ Info:     80   2.3e+02   1.8e-02   0.0e+00   2.3e-02
[ Info:     81   2.3e+02   1.7e-02   0.0e+00   2.4e-02
[ Info:     82   2.3e+02   1.4e-02   0.0e+00   2.5e-02
[ Info:     83   2.3e+02   9.5e-03   0.0e+00   2.4e-02
[ Info:     84   2.3e+02   8.0e-03   0.0e+00   2.5e-02
[ Info:     85   2.3e+02   6.6e-03   0.0e+00   2.6e-02
[ Info:     86   2.3e+02   4.0e-03   0.0e+00   2.4e-02
[ Info:     87   2.3e+02   3.5e-03   0.0e+00   2.2e-02
[ Info:     88   2.3e+02   3.2e-03   0.0e+00   2.0e-02
[ Info:     89   2.3e+02   3.0e-03   0.0e+00   1.7e-02
[ Info:     90   2.3e+02   2.7e-03   0.0e+00   1.5e-02
[ Info:     91   2.3e+02   2.5e-03   0.0e+00   1.2e-02
[ Info:     92   2.3e+02   2.3e-03   0.0e+00   1.0e-02
[ Info:     93   2.3e+02   2.1e-03   0.0e+00   1.2e-02
[ Info:     94   2.3e+02   1.9e-03   0.0e+00   1.3e-02
[ Info:     95   2.3e+02   1.7e-03   0.0e+00   1.3e-02
[ Info:     96   2.3e+02   1.6e-03   0.0e+00   1.2e-02
[ Info:     97   2.3e+02   1.3e-03   0.0e+00   1.2e-02
[ Info:     98   2.3e+02   9.6e-04   0.0e+00   1.0e-02
[ Info:     99   2.3e+02   9.5e-04   0.0e+00   9.2e-03
[ Info:    100   2.3e+02   1.0e-03   0.0e+00   1.1e-02
[ Info:    101   2.3e+02   1.2e-03   0.0e+00   1.2e-02
[ Info:    102   2.3e+02   1.4e-03   0.0e+00   1.4e-02
[ Info:    103   2.3e+02   1.7e-03   0.0e+00   1.5e-02
[ Info:    104   2.3e+02   2.1e-03   0.0e+00   1.6e-02
[ Info:    105   2.3e+02   2.7e-03   0.0e+00   1.6e-02
[ Info:    106   2.3e+02   3.3e-03   0.0e+00   1.5e-02
[ Info:    107   2.3e+02   3.9e-03   0.0e+00   1.5e-02
[ Info:    108   2.3e+02   4.6e-03   0.0e+00   1.6e-02
[ Info:    109   2.3e+02   5.3e-03   0.0e+00   1.7e-02
[ Info:    110   2.3e+02   4.6e-03   0.0e+00   1.4e-02
[ Info:    111   2.3e+02   3.6e-03   0.0e+00   1.8e-02
[ Info:    112   2.3e+02   2.9e-03   0.0e+00   2.4e-02
[ Info:    113   2.3e+02   2.8e-03   0.0e+00   2.8e-02
[ Info:    114   2.3e+02   3.0e-03   0.0e+00   3.0e-02
[ Info:    115   2.3e+02   3.4e-03   0.0e+00   3.1e-02
[ Info:    116   2.3e+02   4.0e-03   0.0e+00   3.0e-02
[ Info:    117   2.3e+02   4.5e-03   0.0e+00   2.7e-02
[ Info:    118   2.3e+02   4.8e-03   0.0e+00   2.3e-02
[ Info:    119   2.3e+02   3.7e-03   0.0e+00   1.6e-02
[ Info:    120   2.3e+02   2.2e-03   0.0e+00   1.6e-02
p=4.0: compliance = 228.14, gray = 0.371
[ Info:   iter       obj      Δobj  violation  kkt_residual  
[ Info:      0   3.6e+03       Inf   0.0e+00   3.3e+02
[ Info:      1   2.3e+03   1.2e+03   0.0e+00   1.0e+03
[ Info:      2   1.3e+03   1.1e+03   0.0e+00   3.2e+02
[ Info:      3   8.8e+02   3.7e+02   0.0e+00   7.8e+01
[ Info:      4   7.3e+02   1.5e+02   0.0e+00   3.7e+01
[ Info:      5   6.4e+02   9.1e+01   0.0e+00   2.3e+01
[ Info:      6   5.7e+02   6.5e+01   0.0e+00   1.6e+01
[ Info:      7   5.1e+02   6.4e+01   0.0e+00   1.7e+01
[ Info:      8   4.4e+02   7.2e+01   0.0e+00   1.9e+01
[ Info:      9   3.6e+02   7.6e+01   0.0e+00   2.3e+01
[ Info:     10   3.1e+02   5.3e+01   0.0e+00   1.2e+01
[ Info:     11   2.8e+02   2.6e+01   0.0e+00   4.9e+00
[ Info:     12   2.7e+02   1.5e+01   0.0e+00   2.3e+00
[ Info:     13   2.6e+02   8.5e+00   0.0e+00   1.5e+00
[ Info:     14   2.5e+02   6.2e+00   0.0e+00   1.0e+00
[ Info:     15   2.5e+02   2.2e+00   0.0e+00   6.6e-01
[ Info:     16   2.5e+02   1.1e+00   0.0e+00   3.7e-01
[ Info:     17   2.5e+02   6.2e-01   0.0e+00   3.0e-01
[ Info:     18   2.5e+02   3.9e-01   0.0e+00   2.3e-01
[ Info:     19   2.5e+02   3.0e-01   0.0e+00   1.8e-01
[ Info:     20   2.5e+02   2.1e-01   0.0e+00   1.8e-01
[ Info:     21   2.5e+02   1.9e-01   0.0e+00   2.2e-01
[ Info:     22   2.5e+02   1.7e-01   0.0e+00   1.1e-01
[ Info:     23   2.5e+02   1.2e-01   0.0e+00   8.6e-02
[ Info:     24   2.5e+02   8.3e-02   0.0e+00   8.4e-02
[ Info:     25   2.5e+02   7.3e-02   0.0e+00   8.3e-02
[ Info:     26   2.5e+02   5.4e-02   0.0e+00   6.7e-02
[ Info:     27   2.5e+02   3.7e-02   0.0e+00   7.0e-02
[ Info:     28   2.5e+02   3.3e-02   0.0e+00   7.4e-02
[ Info:     29   2.5e+02   2.3e-02   0.0e+00   3.0e-02
[ Info:     30   2.5e+02   1.3e-02   0.0e+00   2.4e-02
[ Info:     31   2.5e+02   9.9e-03   0.0e+00   2.2e-02
[ Info:     32   2.5e+02   7.8e-03   0.0e+00   2.1e-02
[ Info:     33   2.5e+02   6.4e-03   0.0e+00   2.0e-02
[ Info:     34   2.5e+02   4.8e-03   0.0e+00   1.8e-02
[ Info:     35   2.5e+02   4.0e-03   0.0e+00   1.6e-02
[ Info:     36   2.5e+02   3.4e-03   0.0e+00   1.6e-02
[ Info:     37   2.5e+02   3.2e-03   0.0e+00   1.5e-02
[ Info:     38   2.5e+02   2.9e-03   0.0e+00   1.5e-02
[ Info:     39   2.5e+02   2.7e-03   0.0e+00   1.5e-02
[ Info:     40   2.5e+02   2.4e-03   0.0e+00   1.5e-02
[ Info:     41   2.5e+02   2.1e-03   0.0e+00   1.4e-02
[ Info:     42   2.5e+02   2.0e-03   0.0e+00   1.4e-02
[ Info:     43   2.5e+02   1.8e-03   0.0e+00   1.4e-02
[ Info:     44   2.5e+02   1.6e-03   0.0e+00   1.4e-02
[ Info:     45   2.5e+02   1.5e-03   0.0e+00   4.7e-03
[ Info:     46   2.5e+02   7.2e-04   0.0e+00   3.3e-03
[ Info:     47   2.5e+02   4.0e-04   0.0e+00   3.6e-03
[ Info:     48   2.5e+02   2.5e-04   0.0e+00   3.8e-03
[ Info:     49   2.5e+02   1.7e-04   0.0e+00   3.9e-03
[ Info:     50   2.5e+02   1.3e-04   0.0e+00   3.8e-03
[ Info:     51   2.5e+02   1.0e-04   0.0e+00   4.0e-03
[ Info:     52   2.5e+02   8.5e-05   0.0e+00   3.8e-03
[ Info:     53   2.5e+02   7.3e-05   0.0e+00   3.8e-03
[ Info:     54   2.5e+02   6.4e-05   0.0e+00   3.6e-03
[ Info:     55   2.5e+02   5.9e-05   0.0e+00   3.6e-03
[ Info:     56   2.5e+02   5.6e-05   0.0e+00   3.4e-03
[ Info:     57   2.5e+02   5.6e-05   0.0e+00   3.3e-03
[ Info:     58   2.5e+02   5.6e-05   0.0e+00   3.0e-03
[ Info:     59   2.5e+02   5.8e-05   0.0e+00   3.0e-03
[ Info:     60   2.5e+02   5.9e-05   0.0e+00   2.5e-03
[ Info:     61   2.5e+02   6.1e-05   0.0e+00   2.7e-03
[ Info:     62   2.5e+02   5.4e-05   0.0e+00   1.9e-03
[ Info:     63   2.5e+02   3.4e-05   0.0e+00   1.6e-03
[ Info:     64   2.5e+02   2.3e-05   0.0e+00   1.3e-03
[ Info:     65   2.5e+02   1.7e-05   0.0e+00   1.2e-03
[ Info:     66   2.5e+02   1.3e-05   0.0e+00   1.0e-03
[ Info:     67   2.5e+02   1.1e-05   0.0e+00   9.3e-04
[ Info:     68   2.5e+02   8.5e-06   0.0e+00   7.5e-04
[ Info:     69   2.5e+02   7.0e-06   0.0e+00   7.0e-04
[ Info:     70   2.5e+02   5.9e-06   0.0e+00   5.6e-04
[ Info:     71   2.5e+02   5.0e-06   0.0e+00   5.6e-04
[ Info:     72   2.5e+02   4.4e-06   0.0e+00   4.4e-04
[ Info:     73   2.5e+02   4.0e-06   0.0e+00   5.6e-04
[ Info:     74   2.5e+02   3.6e-06   0.0e+00   4.3e-04
[ Info:     75   2.5e+02   3.3e-06   0.0e+00   6.5e-04
[ Info:     76   2.5e+02   2.9e-06   0.0e+00   6.6e-04
[ Info:     77   2.5e+02   2.4e-06   0.0e+00   9.0e-04
[ Info:     78   2.5e+02   2.5e-06   0.0e+00   7.2e-04
[ Info:     79   2.5e+02   3.0e-06   0.0e+00   6.5e-04
[ Info:     80   2.5e+02   2.4e-06   0.0e+00   3.8e-04
[ Info:     81   2.5e+02   1.6e-06   0.0e+00   5.3e-04
[ Info:     82   2.5e+02   1.5e-06   0.0e+00   4.9e-04
[ Info:     83   2.5e+02   1.5e-06   0.0e+00   5.4e-04
[ Info:     84   2.5e+02   1.6e-06   0.0e+00   4.9e-04
[ Info:     85   2.5e+02   1.7e-06   0.0e+00   5.0e-04
[ Info:     86   2.5e+02   1.8e-06   0.0e+00   4.2e-04
[ Info:     87   2.5e+02   1.9e-06   0.0e+00   4.4e-04
[ Info:     88   2.5e+02   2.0e-06   0.0e+00   3.3e-04
[ Info:     89   2.5e+02   2.0e-06   0.0e+00   3.9e-04
[ Info:     90   2.5e+02   2.0e-06   0.0e+00   3.7e-04
[ Info:     91   2.5e+02   2.0e-06   0.0e+00   4.2e-04
[ Info:     92   2.5e+02   1.9e-06   0.0e+00   4.4e-04
[ Info:     93   2.5e+02   1.8e-06   0.0e+00   5.1e-04
[ Info:     94   2.5e+02   1.7e-06   0.0e+00   6.0e-04
[ Info:     95   2.5e+02   1.4e-06   0.0e+00   6.9e-04
[ Info:     96   2.5e+02   1.2e-06   0.0e+00   8.4e-04
[ Info:     97   2.5e+02   1.5e-06   0.0e+00   6.4e-04
[ Info:     98   2.5e+02   1.9e-06   0.0e+00   5.6e-04
[ Info:     99   2.5e+02   1.4e-06   0.0e+00   3.8e-04
[ Info:    100   2.5e+02   8.6e-07   0.0e+00   4.6e-04
[ Info:    101   2.5e+02   8.5e-07   0.0e+00   4.6e-04
[ Info:    102   2.5e+02   9.4e-07   0.0e+00   4.6e-04
[ Info:    103   2.5e+02   1.1e-06   0.0e+00   4.6e-04
[ Info:    104   2.5e+02   1.2e-06   0.0e+00   4.2e-04
[ Info:    105   2.5e+02   1.3e-06   0.0e+00   4.0e-04
[ Info:    106   2.5e+02   1.4e-06   0.0e+00   3.7e-04
[ Info:    107   2.5e+02   1.5e-06   0.0e+00   3.5e-04
[ Info:    108   2.5e+02   1.6e-06   0.0e+00   3.1e-04
[ Info:    109   2.5e+02   1.6e-06   0.0e+00   3.5e-04
[ Info:    110   2.5e+02   1.6e-06   0.0e+00   3.2e-04
[ Info:    111   2.5e+02   1.6e-06   0.0e+00   3.6e-04
[ Info:    112   2.5e+02   1.6e-06   0.0e+00   3.4e-04
[ Info:    113   2.5e+02   1.5e-06   0.0e+00   4.1e-04
[ Info:    114   2.5e+02   1.4e-06   0.0e+00   4.0e-04
[ Info:    115   2.5e+02   1.4e-06   0.0e+00   5.2e-04
[ Info:    116   2.5e+02   1.3e-06   0.0e+00   5.0e-04
[ Info:    117   2.5e+02   1.3e-06   0.0e+00   6.3e-04
[ Info:    118   2.5e+02   1.2e-06   0.0e+00   5.9e-04
[ Info:    119   2.5e+02   1.2e-06   0.0e+00   6.0e-04
[ Info:    120   2.5e+02   1.3e-06   0.0e+00   4.4e-04
p=5.0: compliance = 246.38, gray = 0.377

Guidance

  • Power law is the default and the most widely reported; p = 3 is the standard choice for 2D continuum problems.
  • Rational / sinh penalties transition more smoothly, which can help continuation strategies converge from a uniform start.
  • Projected penalty is the go-to when a crisp 0/1 design matters more than a slight stiffness penalty; combine it with a continuation on the projection β (see the projected_filter tutorial) for best results.