Skip to main content

Buckling-Constrained Truss Optimization with SDP Constraints

Description

This tutorial demonstrates buckling-constrained topology optimization on a truss structure. The goal is to minimize compliance while ensuring the combined stiffness matrix K + c·Kσ remains positive semidefinite — i.e., the structure does not buckle under the applied load scaled by buckling factor c.

We use differentiable building blocks (ElementKFun, AssembleKFun, TrussElementKσFun, apply_boundary_with_zerodiag!, apply_boundary_with_meandiag!) and enforce the PSD constraint via semidefinite programming (SDP) using NonconvexSemidefinite.jl with an IPM barrier method.

Setup

using TopOpt, LinearAlgebra, Zygote
using Nonconvex, NonconvexSemidefinite, NonconvexIpopt
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.

Load Truss Geometry

Download the truss geometry file: tim_2d.json.

ndim = 2
node_points, elements, _, _, fixities, load_cases = load_truss_json(
    joinpath(@__DIR__, "tim_$(ndim)d.json")
)
ndim, nnodes, ncells = length(node_points[1]), length(node_points), length(elements)
loads = load_cases["0"]

# Override material and cross-section: a large area (A=800) makes the
# stiffness matrix K dominate the geometric stiffness Kσ, so the initial
# all-solid design is stable (K + c·Kσ ≻ 0) while still allowing the
# compliance-only optimum to go unstable.
mats = TrussFEAMaterial(1.0, 0.3)
crosssecs = TrussFEACrossSec(800.0)

problem = TrussProblem(
    node_points, elements, loads, fixities, mats, crosssecs
)

Parameter Settings

xmin = 0.0001   # minimum density
p = 1.0         # SIMP penalty exponent
V = 0.5         # volume fraction
x0 = fill(1.0, ncells)  # initial design (all solid)

FEA Solver and Buckling Helpers

solver = FEASolver(DirectSolver, problem; xmin=xmin)
ch = problem.ch

comp = ComplianceFun(solver)
dp = DisplacementFun(solver)
assemble_k = AssembleKFun(problem)
element_k = ElementKFun(solver)
truss_element_kσ = TrussElementKσFun(problem, solver)

Five differentiable building blocks:

  1. ComplianceFun — objective to minimize
  2. DisplacementFun — solves K·u = f for displacements
  3. ElementKFun — per-element stiffness matrices
  4. AssembleKFun — assembles global sparse matrix
  5. TrussElementKσFun — geometric (stress) stiffness matrices

Buckling Constraint Function

c = 1.0  # buckling load multiplier — large enough that the constraint binds

function buckling_matrix_constr(x)
    xd = PseudoDensities(x)
    u = dp(xd)
    Kes = element_k(xd)
    K = assemble_k(Kes)
    K = apply_boundary_with_meandiag!(K, ch)
    Kσs = truss_element_kσ(u, xd)
    Kσ = assemble_k(Kσs)
    Kσ = apply_boundary_with_zerodiag!(Kσ, ch)
    return Array(K + c * Kσ)
end

The constraint returns the combined matrix K + c·Kσ which must be PSD (all eigenvalues ≥ 0).

Check Initial Design

S0 = buckling_matrix_constr(x0)
println("Initial design minimum eigenvalue: $(minimum(eigen(S0).values))")
Initial design minimum eigenvalue: 0.3412528944345227

The initial all-solid design should have positive eigenvalues (stable).

Volume Constraint

vol_constr(x) = sum(x) / length(x) - V

Compliance-Only Optimization (Baseline)

obj = x -> comp(PseudoDensities(x))

model = Model(obj)
addvar!(model, zeros(length(x0)), ones(length(x0)))
add_ineq_constraint!(model, vol_constr)

alg = MMA87()
options = MMAOptions(; maxiter=200, tol=Tolerance(; kkt=1e-4))
r1 = optimize(model, alg, x0; options=options)

println("ComplianceFun-only result:")
println("  obj = $(obj(r1.minimizer))")
println("  vol = $(vol_constr(r1.minimizer))")
[ Info:   iter       obj      Δobj  violation  kkt_residual  
[ Info:      0   5.4e-03       Inf   5.0e-01   5.0e-01
[ Info:      1   9.8e-03   4.4e-03   5.0e-02   2.4e+32
[ Info:      2   5.4e-02   4.4e-02   0.0e+00   5.8e+32
[ Info:      3   5.4e+01   5.4e+01   0.0e+00   4.1e+31
[ Info:      4   5.4e+01   0.0e+00   0.0e+00   1.7e+28
[ Info:      5   5.4e+01   0.0e+00   0.0e+00   2.8e+25
[ Info:      6   5.4e+01   0.0e+00   0.0e+00   2.8e+22
[ Info:      7   5.4e+01   0.0e+00   0.0e+00   2.8e+19
[ Info:      8   5.4e+01   0.0e+00   0.0e+00   2.8e+16
[ Info:      9   1.4e-02   5.4e+01   0.0e+00   2.0e+04
[ Info:     10   8.3e-03   6.1e-03   0.0e+00   1.3e-03
[ Info:     11   6.5e-03   1.9e-03   0.0e+00   4.0e-04
[ Info:     12   6.2e-03   2.9e-04   0.0e+00   1.1e-03
[ Info:     13   6.2e-03   2.9e-06   0.0e+00   5.5e-05
ComplianceFun-only result:
  obj = 0.006166837601340131
  vol = -0.025075445553046527

This baseline ignores buckling — the result may be unstable.

Add Buckling SDP Constraint

# Add semidefinite constraint: K + c·Kσ ≽ 0
add_sd_constraint!(model, buckling_matrix_constr)

alg2 = SDPBarrierAlg(; sub_alg=IpoptAlg())
options2 = SDPBarrierOptions(; 
    sub_options=IpoptOptions(; max_iter=200),
    keep_all=true
)
r2 = optimize(model, alg2, x0; options=options2)

println("Buckling-constrained result:")
println("  obj = $(obj(r2.minimizer))")
println("  vol = $(vol_constr(r2.minimizer))")

******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit https://github.com/coin-or/Ipopt
******************************************************************************

This is Ipopt version 3.14.19, running with linear solver MUMPS 5.9.0.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       42
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       42
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       42
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        1
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        1

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0 -2.5831925e+02 4.90e-01 1.12e+00   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1 -2.4597102e+02 2.16e-01 2.13e+01  -0.3 4.84e-01    -  1.00e+00 5.68e-01f  1
   2 -2.3214378e+02 0.00e+00 3.03e-01  -0.5 2.84e-01    -  1.00e+00 1.00e+00h  1
   3 -2.3258589e+02 0.00e+00 3.34e-02  -1.7 4.93e-02    -  9.59e-01 1.00e+00f  1
   4 -2.3268254e+02 0.00e+00 1.03e-02  -3.1 2.45e-02    -  9.98e-01 1.00e+00f  1
   5 -2.3268360e+02 0.00e+00 1.15e-03  -4.8 3.87e-03    -  9.97e-01 1.00e+00f  1
   6 -2.3268361e+02 0.00e+00 1.54e-04  -6.8 4.27e-04    -  1.00e+00 1.00e+00f  1
   7 -2.3268361e+02 0.00e+00 7.05e-05  -8.8 5.98e-05    -  1.00e+00 1.00e+00f  1
   8 -2.3268361e+02 0.00e+00 8.16e-07 -11.0 1.82e-05    -  1.00e+00 1.00e+00h  1
   9 -2.3268361e+02 0.00e+00 8.93e-08 -11.0 2.35e-07    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10 -2.3268361e+02 0.00e+00 1.32e-08 -11.0 2.83e-08    -  1.00e+00 1.00e+00h  1
  11 -2.3268361e+02 0.00e+00 9.09e-10 -11.0 5.00e-09    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 11

                                   (scaled)                 (unscaled)
Objective...............:  -2.3268361058670979e+02   -2.3268361058670979e+02
Dual infeasibility......:   9.0859979739434869e-10    9.0859979739434869e-10
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000000000003e-11    1.0000000000000003e-11
Overall NLP error.......:   9.0859979739434869e-10    9.0859979739434869e-10


Number of objective function evaluations             = 12
Number of objective gradient evaluations             = 12
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 12
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 12
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 8.627

EXIT: Optimal Solution Found.
This is Ipopt version 3.14.19, running with linear solver MUMPS 5.9.0.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       42
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       42
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       42
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        1
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        1

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0 -2.3259806e+01 0.00e+00 1.55e-01   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1 -2.3304391e+01 5.86e-03 2.00e+00  -1.7 2.45e-02    -  9.97e-01 4.04e-01h  1
   2 -2.3258771e+01 0.00e+00 1.54e-04  -3.0 6.64e-03    -  1.00e+00 1.00e+00h  1
   3 -2.3259806e+01 0.00e+00 2.79e-04  -9.1 2.29e-03    -  9.95e-01 1.00e+00f  1
   4 -2.3259813e+01 0.00e+00 2.21e-05  -7.5 1.07e-03    -  1.00e+00 1.00e+00f  1
   5 -2.3259813e+01 0.00e+00 8.83e-06 -11.0 8.01e-05    -  1.00e+00 1.00e+00f  1
   6 -2.3259813e+01 0.00e+00 8.90e-07 -11.0 2.14e-05    -  1.00e+00 1.00e+00h  1
   7 -2.3259813e+01 0.00e+00 2.64e-07 -11.0 2.64e-06    -  1.00e+00 1.00e+00h  1
   8 -2.3259813e+01 0.00e+00 1.07e-09 -11.0 1.11e-06    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 8

                                   (scaled)                 (unscaled)
Objective...............:  -2.3259812936628041e+01   -2.3259812936628041e+01
Dual infeasibility......:   1.0679312936568731e-09    1.0679312936568731e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000000003714e-11    1.0000000000003714e-11
Overall NLP error.......:   1.0679312936568731e-09    1.0679312936568731e-09


Number of objective function evaluations             = 9
Number of objective gradient evaluations             = 9
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 9
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 9
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.018

EXIT: Optimal Solution Found.
This is Ipopt version 3.14.19, running with linear solver MUMPS 5.9.0.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       42
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       42
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       42
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        1
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        1

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0 -2.3174405e+00 0.00e+00 5.43e-03   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1 -2.3168985e+00 0.00e+00 7.84e-04  -6.3 9.31e-03    -  9.88e-01 1.00e+00h  1
   2 -2.3173917e+00 0.00e+00 6.02e-05  -8.2 7.77e-03    -  9.79e-01 1.00e+00f  1
   3 -2.3175081e+00 0.00e+00 1.66e-05  -5.8 1.29e-02    -  9.98e-01 1.00e+00f  1
   4 -2.3175100e+00 0.00e+00 3.62e-06 -11.0 1.01e-03    -  9.99e-01 1.00e+00f  1
   5 -2.3175100e+00 0.00e+00 1.17e-06 -11.0 1.29e-04    -  1.00e+00 1.00e+00h  1
   6 -2.3175100e+00 0.00e+00 7.63e-08 -11.0 2.93e-05    -  1.00e+00 1.00e+00h  1
   7 -2.3175100e+00 0.00e+00 1.59e-08 -11.0 2.45e-06    -  1.00e+00 1.00e+00h  1
   8 -2.3175100e+00 0.00e+00 1.23e-09 -11.0 6.43e-07    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 8

                                   (scaled)                 (unscaled)
Objective...............:  -2.3175099519889897e+00   -2.3175099519889897e+00
Dual infeasibility......:   1.2330597496211724e-09    1.2330597496211724e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000000000179e-11    1.0000000000000179e-11
Overall NLP error.......:   1.2330597496211724e-09    1.2330597496211724e-09


Number of objective function evaluations             = 9
Number of objective gradient evaluations             = 9
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 9
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 9
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.016

EXIT: Optimal Solution Found.
This is Ipopt version 3.14.19, running with linear solver MUMPS 5.9.0.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       42
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       42
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       42
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        1
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        1

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0 -2.2334622e-01 0.00e+00 2.14e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1 -2.2307990e-01 0.00e+00 3.26e-03  -6.3 7.13e-03    -  9.82e-01 1.00e+00h  1
   2 -2.2316310e-01 0.00e+00 8.30e-05  -8.1 8.05e-03    -  9.77e-01 1.00e+00f  1
   3 -2.2371842e-01 0.00e+00 7.40e-05  -4.8 6.88e-02    -  9.93e-01 1.00e+00f  1
   4 -2.2382086e-01 0.00e+00 3.35e-05  -6.3 3.97e-02    -  1.00e+00 1.00e+00f  1
   5 -2.2382203e-01 0.00e+00 5.35e-06  -7.9 9.53e-03    -  1.00e+00 1.00e+00f  1
   6 -2.2382206e-01 0.00e+00 1.23e-06  -9.7 1.75e-03    -  1.00e+00 1.00e+00f  1
   7 -2.2382206e-01 0.00e+00 5.88e-07 -11.0 3.19e-04    -  1.00e+00 1.00e+00h  1
   8 -2.2382206e-01 0.00e+00 1.69e-08 -11.0 1.00e-04    -  1.00e+00 1.00e+00h  1
   9 -2.2382206e-01 0.00e+00 4.77e-09 -11.0 3.28e-06    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 9

                                   (scaled)                 (unscaled)
Objective...............:  -2.2382205830250979e-01   -2.2382205830250979e-01
Dual infeasibility......:   4.7684533663421489e-09    4.7684533663421489e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000000001235e-11    1.0000000000001235e-11
Overall NLP error.......:   4.7684533663421489e-09    4.7684533663421489e-09


Number of objective function evaluations             = 10
Number of objective gradient evaluations             = 10
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 10
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 10
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.018

EXIT: Optimal Solution Found.
This is Ipopt version 3.14.19, running with linear solver MUMPS 5.9.0.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       42
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       42
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       42
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        1
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        1

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0 -1.4819689e-02 0.00e+00 2.30e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1 -1.4757724e-02 0.00e+00 3.58e-03  -6.3 7.04e-03    -  9.79e-01 1.00e+00h  1
   2 -1.4769341e-02 0.00e+00 3.04e-05  -4.1 2.15e-03    -  9.92e-01 1.00e+00f  1
   3 -1.5440986e-02 0.00e+00 5.54e-05  -5.0 9.56e-02    -  9.27e-01 1.00e+00f  1
   4 -1.5889369e-02 0.00e+00 5.99e-05  -6.0 1.13e-01    -  9.93e-01 1.00e+00f  1
   5 -1.5949831e-02 0.00e+00 3.61e-05  -7.1 4.62e-02    -  1.00e+00 9.30e-01f  1
   6 -1.5953073e-02 0.00e+00 9.42e-06  -7.6 1.26e-02    -  1.00e+00 1.00e+00f  1
   7 -1.5953935e-02 0.00e+00 4.73e-06  -8.5 5.36e-03    -  1.00e+00 1.00e+00f  1
   8 -1.5954027e-02 0.00e+00 1.44e-06 -10.4 1.52e-03    -  1.00e+00 9.92e-01f  1
   9 -1.5954029e-02 0.00e+00 6.83e-07 -11.0 9.22e-04    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10 -1.5954029e-02 0.00e+00 1.49e-07 -11.0 6.95e-04    -  1.00e+00 1.00e+00h  1
  11 -1.5954029e-02 0.00e+00 5.86e-08 -11.0 1.10e-04    -  1.00e+00 1.00e+00h  1
  12 -1.5954029e-02 0.00e+00 8.04e-09 -11.0 2.73e-05    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 12

                                   (scaled)                 (unscaled)
Objective...............:  -1.5954029329887529e-02   -1.5954029329887529e-02
Dual infeasibility......:   8.0383938338634379e-09    8.0383938338634379e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   9.9999999999999994e-12    9.9999999999999994e-12
Overall NLP error.......:   8.0383938338634379e-09    8.0383938338634379e-09


Number of objective function evaluations             = 13
Number of objective gradient evaluations             = 13
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 13
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 13
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.024

EXIT: Optimal Solution Found.
This is Ipopt version 3.14.19, running with linear solver MUMPS 5.9.0.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       42
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       42
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       42
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        1
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        1

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  4.3397036e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  4.3538233e-03 0.00e+00 3.00e-03  -6.3 7.74e-03    -  9.73e-01 1.00e+00h  1
   2  4.3498295e-03 0.00e+00 3.29e-05  -7.9 8.23e-04    -  9.89e-01 1.00e+00f  1
   3  4.1432178e-03 0.00e+00 2.48e-06  -9.8 4.73e-02    -  9.49e-01 1.00e+00f  1
   4  3.9362369e-03 0.00e+00 1.35e-05  -6.6 7.31e-02    -  1.00e+00 8.35e-01f  1
   5  3.9463892e-03 0.00e+00 6.74e-06  -6.3 1.59e-02    -  9.77e-01 1.00e+00f  1
   6  3.9409456e-03 0.00e+00 2.15e-06  -6.3 4.48e-03    -  1.00e+00 1.00e+00f  1
   7  3.9318881e-03 0.00e+00 2.05e-06  -9.0 3.64e-03    -  9.98e-01 9.91e-01f  1
   8  3.9318541e-03 0.00e+00 4.07e-07  -9.7 1.38e-03    -  1.00e+00 1.00e+00f  1
   9  3.9318503e-03 0.00e+00 3.30e-08 -11.0 3.07e-04    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10  3.9318503e-03 0.00e+00 5.29e-09 -11.0 4.64e-05    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 10

                                   (scaled)                 (unscaled)
Objective...............:   3.9318503221212504e-03    3.9318503221212504e-03
Dual infeasibility......:   5.2873032936507076e-09    5.2873032936507076e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000171411304681e-11    1.0000171411304681e-11
Overall NLP error.......:   5.2873032936507076e-09    5.2873032936507076e-09


Number of objective function evaluations             = 11
Number of objective gradient evaluations             = 11
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 11
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 11
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.020

EXIT: Optimal Solution Found.
This is Ipopt version 3.14.19, running with linear solver MUMPS 5.9.0.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       42
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       42
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       42
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        1
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        1

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  5.9519383e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  5.9536535e-03 0.00e+00 1.53e-03  -6.3 4.95e-03    -  9.79e-01 1.00e+00h  1
   2  5.9523564e-03 0.00e+00 1.59e-05  -8.0 3.48e-04    -  9.90e-01 1.00e+00f  1
   3  5.9093991e-03 0.00e+00 9.57e-07 -10.0 8.11e-03    -  9.91e-01 1.00e+00f  1
   4  5.8897056e-03 0.00e+00 1.09e-05  -7.3 4.68e-02    -  8.96e-01 1.00e+00f  1
   5  5.8863722e-03 0.00e+00 2.56e-04  -7.2 1.58e-01    -  1.00e+00 1.00e+00f  1
   6  5.8980191e-03 0.00e+00 4.69e-05  -6.2 6.48e-02    -  1.00e+00 1.00e+00f  1
   7  5.8951986e-03 0.00e+00 1.67e-05  -6.3 1.05e-01    -  1.00e+00 1.00e+00f  1
   8  5.8948885e-03 0.00e+00 1.44e-05  -6.3 3.54e-02    -  1.00e+00 2.50e-01f  3
   9  5.8946167e-03 0.00e+00 1.23e-05  -6.3 1.06e-02    -  1.00e+00 1.00e+00f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10  5.8942760e-03 0.00e+00 7.90e-06  -6.3 9.82e-03    -  1.00e+00 1.00e+00f  1
  11  5.8942199e-03 0.00e+00 7.19e-06  -6.3 4.38e-03    -  1.00e+00 1.00e+00f  1
  12  5.8942191e-03 0.00e+00 1.71e-06  -6.3 3.95e-03    -  1.00e+00 1.00e+00f  1
  13  5.8830929e-03 0.00e+00 1.50e-05  -9.0 4.33e-02    -  8.63e-01 9.89e-01f  1
  14  5.8848401e-03 0.00e+00 1.09e-04  -7.3 7.36e-02    -  9.99e-01 1.00e+00f  1
  15  5.8838141e-03 0.00e+00 1.58e-05  -7.4 3.11e-02    -  5.87e-01 1.00e+00f  1
  16  5.8835513e-03 0.00e+00 5.56e-06  -7.4 1.56e-02    -  1.00e+00 1.00e+00f  1
  17  5.8835411e-03 0.00e+00 2.46e-06  -7.4 1.04e-02    -  1.00e+00 1.00e+00f  1
  18  5.8835347e-03 0.00e+00 1.51e-06  -7.4 5.97e-03    -  1.00e+00 5.00e-01h  2
  19  5.8835292e-03 0.00e+00 1.07e-06  -7.4 3.89e-03    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20  5.8835335e-03 0.00e+00 1.04e-06  -7.4 2.91e-03    -  1.00e+00 1.00e+00h  1
  21  5.8835322e-03 0.00e+00 2.97e-06  -7.4 1.52e-03    -  1.00e+00 1.00e+00H  1
  22  5.8835306e-03 0.00e+00 6.45e-08  -7.4 1.17e-03    -  1.00e+00 1.00e+00f  1
  23  5.8827366e-03 0.00e+00 8.08e-07  -9.0 5.37e-03    -  1.00e+00 1.00e+00f  1
  24  5.8827318e-03 0.00e+00 4.50e-06 -10.2 8.69e-03    -  1.00e+00 1.00e+00f  1
  25  5.8827243e-03 0.00e+00 2.21e-06 -10.7 4.65e-03    -  1.00e+00 5.00e-01f  2
  26  5.8827155e-03 0.00e+00 3.09e-07 -11.0 4.53e-03    -  1.00e+00 1.00e+00f  1
  27  5.8827156e-03 0.00e+00 3.53e-07 -11.0 3.82e-04    -  1.00e+00 1.00e+00h  1
  28  5.8827154e-03 0.00e+00 3.20e-08 -11.0 5.34e-04    -  1.00e+00 1.00e+00h  1
  29  5.8827154e-03 0.00e+00 5.61e-08 -11.0 8.55e-05    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30  5.8827154e-03 0.00e+00 2.92e-08 -11.0 4.41e-05    -  1.00e+00 1.00e+00h  1
  31  5.8827154e-03 0.00e+00 1.35e-08 -11.0 1.86e-05    -  1.00e+00 1.00e+00h  1
  32  5.8827154e-03 0.00e+00 3.03e-09 -11.0 5.52e-06    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 32

                                   (scaled)                 (unscaled)
Objective...............:   5.8827154104889277e-03    5.8827154104889277e-03
Dual infeasibility......:   3.0331791302046032e-09    3.0331791302046032e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000009188241e-11    1.0000000009188241e-11
Overall NLP error.......:   3.0331791302046032e-09    3.0331791302046032e-09


Number of objective function evaluations             = 42
Number of objective gradient evaluations             = 33
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 42
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 33
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.064

EXIT: Optimal Solution Found.
This is Ipopt version 3.14.19, running with linear solver MUMPS 5.9.0.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       42
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       42
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       42
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        1
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        1

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  6.1339925e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  6.1354978e-03 0.00e+00 2.73e-03  -6.3 5.02e-03    -  9.79e-01 1.00e+00h  1
   2  6.1342217e-03 0.00e+00 2.91e-05  -8.0 4.10e-04    -  9.89e-01 1.00e+00f  1
   3  6.1149769e-03 0.00e+00 1.31e-06  -5.8 7.68e-03    -  1.00e+00 1.00e+00f  1
   4  6.0751687e-03 0.00e+00 5.84e-06  -7.0 1.86e-02    -  9.69e-01 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
   5  6.0729784e-03 0.00e+00 1.02e-05  -8.1 8.64e-02    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
   6  6.0711069e-03 0.00e+00 2.51e-05  -7.9 6.90e-01    -  1.00e+00 1.76e-01f  2
   7  6.0707799e-03 0.00e+00 1.86e-05  -7.5 2.70e-01    -  1.00e+00 1.03e-01f  2
Warning: Cutting back alpha due to evaluation error
   8  6.0701559e-03 0.00e+00 5.87e-05  -7.7 4.81e-02    -  1.00e+00 4.58e-01f  2
   9  6.0703720e-03 0.00e+00 2.27e-05  -7.1 6.10e-02    -  1.00e+00 1.98e-01f  3
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10  6.0705951e-03 0.00e+00 6.04e-06  -7.2 2.30e-02    -  1.00e+00 1.00e+00f  1
  11  6.0705862e-03 0.00e+00 7.15e-06  -7.2 9.42e-03    -  1.00e+00 1.25e-01f  4
  12  6.0705464e-03 0.00e+00 5.19e-06  -7.2 1.92e-03    -  1.00e+00 1.00e+00h  1
  13  6.0705249e-03 0.00e+00 1.69e-06  -7.2 2.19e-03    -  1.00e+00 1.00e+00h  1
  14  6.0705242e-03 0.00e+00 1.47e-06  -7.2 2.19e-03    -  1.00e+00 5.00e-01h  2
  15  6.0705335e-03 0.00e+00 1.42e-06  -7.2 2.49e-03    -  1.00e+00 1.00e+00h  1
  16  6.0705255e-03 0.00e+00 1.39e-06  -7.2 2.35e-03    -  1.00e+00 1.00e+00h  1
  17  6.0705205e-03 0.00e+00 2.36e-06  -7.2 2.65e-03    -  1.00e+00 1.00e+00h  1
  18  6.0705289e-03 0.00e+00 3.65e-07  -7.2 2.93e-03    -  1.00e+00 1.00e+00h  1
  19  6.0699589e-03 0.00e+00 4.70e-05  -9.0 8.05e-02    -  8.96e-01 4.66e-01f  2
Warning: Cutting back alpha due to evaluation error
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20  6.0698610e-03 0.00e+00 3.60e-05  -7.5 3.26e-02    -  1.00e+00 2.50e-01f  3
  21  6.0723680e-03 0.00e+00 2.80e-05  -7.0 1.17e-01    -  1.00e+00 1.00e+00f  1
  22  6.0721740e-03 0.00e+00 1.95e-05  -7.1 6.18e-02    -  8.46e-01 2.50e-01f  3
  23  6.0711455e-03 0.00e+00 1.54e-05  -7.1 6.43e-02    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  24  6.0710849e-03 0.00e+00 8.48e-06  -7.1 1.94e-02    -  1.00e+00 1.63e-01f  3
  25  6.0710921e-03 0.00e+00 4.91e-06  -7.1 7.23e-03    -  1.00e+00 1.00e+00f  1
  26  6.0710816e-03 0.00e+00 3.46e-06  -7.1 6.96e-03    -  1.00e+00 1.00e+00f  1
  27  6.0710725e-03 0.00e+00 2.84e-06  -7.1 1.35e-03    -  1.00e+00 5.00e-01f  2
  28  6.0710764e-03 0.00e+00 4.65e-07  -7.1 1.60e-03    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
  29  6.0700945e-03 0.00e+00 1.72e-05  -9.0 5.95e-02    -  9.17e-01 5.00e-01f  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30  6.0700819e-03 0.00e+00 5.32e-05  -9.0 1.06e-01    -  5.42e-01 2.32e-01f  2
  31  6.0698869e-03 0.00e+00 5.01e-05  -9.0 5.81e-02    -  5.60e-01 4.50e-01f  2
  32  6.0696695e-03 0.00e+00 2.12e-05  -9.0 3.77e-02    -  2.87e-01 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
  33  6.0695689e-03 0.00e+00 1.76e-05  -7.8 7.79e-02    -  1.00e+00 3.98e-01f  2
  34  6.0695418e-03 0.00e+00 1.41e-05  -7.9 4.62e-02    -  1.00e+00 2.50e-01f  3
  35  6.0694791e-03 0.00e+00 8.23e-06  -8.1 2.27e-02    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
  36  6.0693667e-03 0.00e+00 2.86e-05  -9.3 3.04e-02    -  1.00e+00 5.00e-01f  2
  37  6.0693553e-03 0.00e+00 1.03e-05  -8.2 5.62e-02    -  1.00e+00 7.72e-02f  4
  38  6.0692996e-03 0.00e+00 9.03e-06  -8.7 1.67e-02    -  1.00e+00 1.00e+00f  1
  39  6.0692475e-03 0.00e+00 5.66e-06  -9.6 3.74e-03    -  1.00e+00 1.00e+00f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  40  6.0692294e-03 0.00e+00 3.85e-06 -10.7 4.81e-03    -  1.00e+00 1.00e+00f  1
  41  6.0692281e-03 0.00e+00 1.25e-06 -11.0 6.10e-03    -  1.00e+00 5.00e-01h  2
  42  6.0692746e-03 0.00e+00 2.24e-05 -11.0 2.13e-02    -  1.00e+00 5.00e-01h  2
  43  6.0692312e-03 0.00e+00 5.39e-06 -11.0 3.72e-03    -  1.00e+00 1.00e+00f  1
  44  6.0692470e-03 0.00e+00 1.93e-05 -11.0 8.32e-03    -  1.00e+00 1.00e+00h  1
  45  6.0692393e-03 0.00e+00 6.82e-06 -11.0 3.64e-03    -  1.00e+00 5.00e-01f  2
  46  6.0692270e-03 0.00e+00 1.42e-06 -11.0 6.13e-03    -  1.00e+00 1.00e+00f  1
  47  6.0692306e-03 0.00e+00 3.91e-06 -11.0 1.63e-03    -  1.00e+00 1.00e+00H  1
  48  6.0692265e-03 0.00e+00 2.27e-07 -11.0 1.77e-03    -  1.00e+00 1.00e+00f  1
  49  6.0692266e-03 0.00e+00 8.11e-07 -11.0 6.95e-04    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  50  6.0692269e-03 0.00e+00 1.32e-06 -11.0 1.88e-03    -  1.00e+00 5.00e-01h  2
  51  6.0692286e-03 0.00e+00 6.03e-06 -11.0 1.40e-03    -  1.00e+00 5.00e-01h  2
  52  6.0692266e-03 0.00e+00 8.49e-07 -11.0 1.47e-03    -  1.00e+00 1.00e+00f  1
  53  6.0692267e-03 0.00e+00 1.39e-06 -11.0 2.25e-03    -  1.00e+00 2.50e-01h  3
  54  6.0692264e-03 0.00e+00 8.43e-08 -11.0 2.73e-04    -  1.00e+00 1.00e+00h  1
  55  6.0692264e-03 0.00e+00 8.12e-08 -11.0 1.11e-04    -  1.00e+00 1.00e+00h  1
  56  6.0692265e-03 0.00e+00 4.58e-07 -11.0 8.28e-04    -  1.00e+00 1.00e+00H  1
  57  6.0692265e-03 0.00e+00 2.96e-07 -11.0 7.87e-04    -  1.00e+00 1.25e-01h  4
  58  6.0692264e-03 0.00e+00 2.22e-07 -11.0 1.31e-03    -  1.00e+00 1.00e+00h  1
  59  6.0692264e-03 0.00e+00 2.15e-07 -11.0 1.54e-03    -  1.00e+00 1.56e-02h  7
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  60  6.0692264e-03 0.00e+00 5.45e-08 -11.0 5.72e-04    -  1.00e+00 1.00e+00h  1
  61  6.0692267e-03 0.00e+00 1.39e-06 -11.0 4.92e-04    -  1.00e+00 1.00e+00h  1
  62  6.0692264e-03 0.00e+00 1.01e-07 -11.0 3.86e-04    -  1.00e+00 1.00e+00h  1
  63  6.0692264e-03 0.00e+00 4.50e-08 -11.0 2.52e-04    -  1.00e+00 2.50e-01h  3
  64  6.0692264e-03 0.00e+00 2.98e-08 -11.0 4.23e-05    -  1.00e+00 5.00e-01h  2
  65  6.0692264e-03 0.00e+00 5.30e-08 -11.0 5.07e-05    -  1.00e+00 1.00e+00H  1
  66  6.0692264e-03 0.00e+00 4.11e-08 -11.0 3.32e-05    -  1.00e+00 1.25e-01h  4
  67  6.0692264e-03 0.00e+00 7.38e-08 -11.0 2.44e-05    -  1.00e+00 1.00e+00h  1
  68  6.0692264e-03 0.00e+00 2.55e-08 -11.0 7.09e-05    -  1.00e+00 2.50e-01h  3
  69  6.0692264e-03 0.00e+00 8.15e-09 -11.0 2.27e-05    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 69

                                   (scaled)                 (unscaled)
Objective...............:   6.0692263975253048e-03    6.0692263975253048e-03
Dual infeasibility......:   8.1474126810847163e-09    8.1474126810847163e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000003121561306e-11    1.0000003121561306e-11
Overall NLP error.......:   8.1474126810847163e-09    8.1474126810847163e-09


Number of objective function evaluations             = 150
Number of objective gradient evaluations             = 70
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 150
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 70
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.204

EXIT: Optimal Solution Found.
This is Ipopt version 3.14.19, running with linear solver MUMPS 5.9.0.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       42
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       42
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       42
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        1
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        1

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  6.1472664e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  6.1485504e-03 0.00e+00 2.96e-03  -6.3 5.48e-03    -  9.78e-01 1.00e+00h  1
   2  6.1473295e-03 0.00e+00 3.52e-05  -8.0 6.86e-04    -  9.88e-01 1.00e+00f  1
   3  6.1491428e-03 0.00e+00 6.85e-06  -5.6 1.87e-02    -  9.97e-01 1.00e+00f  1
   4  6.1563801e-03 0.00e+00 6.03e-05  -5.6 4.86e-01    -  9.06e-01 1.00e+00f  1
   5  6.1554666e-03 0.00e+00 1.12e-05  -5.6 1.13e-01    -  1.00e+00 2.50e-01f  3
   6  6.0970618e-03 0.00e+00 7.96e-06  -8.4 1.30e-01    -  5.54e-01 9.64e-01f  1
   7  6.0971916e-03 0.00e+00 6.22e-05  -6.5 1.82e-01    -  9.99e-01 1.00e+00f  1
   8  6.0948002e-03 0.00e+00 2.09e-05  -6.6 1.25e-01    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
   9  6.0913097e-03 0.00e+00 3.12e-05  -7.5 9.26e-02    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10  6.0888484e-03 0.00e+00 9.94e-06  -8.6 1.72e-01    -  1.00e+00 4.15e-01f  2
  11  6.0886508e-03 0.00e+00 4.80e-05  -8.0 1.09e-01    -  1.00e+00 2.25e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  12  6.0879061e-03 0.00e+00 6.11e-05  -9.0 6.40e-02    -  1.00e+00 2.48e-01f  3
  13  6.0933349e-03 0.00e+00 3.21e-05  -6.8 1.93e-01    -  1.00e+00 1.00e+00f  1
  14  6.0929880e-03 0.00e+00 1.84e-05  -6.8 1.02e-01    -  1.00e+00 2.18e-01f  3
  15  6.0915053e-03 0.00e+00 1.43e-05  -6.8 7.35e-02    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  16  6.0913792e-03 0.00e+00 1.63e-05  -6.8 6.63e-02    -  7.39e-01 2.37e-01f  3
  17  6.0913192e-03 0.00e+00 2.17e-05  -6.8 8.19e-03    -  1.00e+00 1.00e+00f  1
  18  6.0913471e-03 0.00e+00 3.90e-06  -6.8 5.63e-03    -  1.00e+00 1.00e+00f  1
  19  6.0912975e-03 0.00e+00 9.54e-07  -6.8 2.14e-03    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20  6.0889007e-03 0.00e+00 1.80e-05  -9.0 1.29e-01    -  8.22e-01 4.64e-01f  2
Warning: Cutting back alpha due to evaluation error
  21  6.0882540e-03 0.00e+00 3.54e-05  -9.0 1.60e-01    -  9.73e-01 2.33e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  22  6.0877833e-03 0.00e+00 3.59e-04  -9.0 6.20e-02    -  7.10e-01 2.17e-01f  3
  23  6.0877857e-03 0.00e+00 2.65e-05  -7.2 2.70e-02    -  1.00e+00 7.98e-02f  4
  24  6.0879029e-03 0.00e+00 1.70e-05  -7.3 2.98e-02    -  6.80e-01 1.00e+00f  1
  25  6.0879141e-03 0.00e+00 1.51e-05  -7.3 1.16e-02    -  1.00e+00 5.00e-01f  2
  26  6.0878829e-03 0.00e+00 1.25e-05  -7.3 4.56e-03    -  1.00e+00 1.00e+00f  1
  27  6.0877285e-03 0.00e+00 8.92e-06  -7.3 1.54e-02    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  28  6.0871570e-03 0.00e+00 2.35e-05  -8.2 7.47e-02    -  1.00e+00 4.86e-01f  2
  29  6.0868550e-03 0.00e+00 4.56e-05  -9.0 4.19e-02    -  1.00e+00 3.31e-01f  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30  6.0961285e-03 0.00e+00 3.01e-05  -6.9 2.27e-01    -  9.74e-01 1.00e+00f  1
  31  6.0957911e-03 0.00e+00 3.59e-05  -6.7 1.61e-01    -  9.91e-01 1.93e-01f  2
  32  6.0930856e-03 0.00e+00 1.53e-05  -6.7 7.21e-02    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  33  6.0925300e-03 0.00e+00 2.35e-05  -6.7 3.14e-02    -  9.74e-01 4.08e-01f  2
  34  6.0922580e-03 0.00e+00 5.98e-06  -6.7 6.57e-03    -  1.00e+00 1.00e+00f  1
  35  6.0922537e-03 0.00e+00 2.28e-06  -6.7 3.66e-03    -  1.00e+00 5.00e-01f  2
  36  6.0922780e-03 0.00e+00 1.12e-06  -6.7 2.15e-03    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  37  6.0896595e-03 0.00e+00 9.81e-06  -9.0 6.99e-02    -  8.93e-01 4.81e-01f  2
  38  6.0889258e-03 0.00e+00 3.00e-05  -9.0 2.78e-01    -  9.71e-01 1.97e-01f  2
Warning: Cutting back alpha due to evaluation error
  39  6.0882630e-03 0.00e+00 8.60e-05  -9.0 1.22e-01    -  9.85e-01 2.45e-01f  2
Warning: Cutting back alpha due to evaluation error
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  40  6.0877460e-03 0.00e+00 4.54e-04  -9.0 8.37e-02    -  4.31e-01 2.19e-01f  2
  41  6.0877227e-03 0.00e+00 8.10e-05  -9.0 1.60e-01    -  1.68e-01 1.58e-02f  4
  42  6.0874943e-03 0.00e+00 4.05e-05  -9.0 3.76e-02    -  1.49e-01 2.72e-01f  2
  43  6.0865035e-03 0.00e+00 1.71e-05  -9.0 8.94e-03    -  9.69e-01 1.00e+00f  1
  44  6.0864144e-03 0.00e+00 3.33e-05 -10.0 6.98e-02    -  1.00e+00 2.18e-01f  2
Warning: Cutting back alpha due to evaluation error
  45  6.0863961e-03 0.00e+00 1.90e-05 -11.0 5.93e-02    -  5.32e-01 7.71e-02f  3
Warning: Cutting back alpha due to evaluation error
  46  6.0863641e-03 0.00e+00 1.84e-05 -11.0 2.21e-02    -  1.00e+00 4.03e-01f  2
Warning: Cutting back alpha due to evaluation error
  47  6.0863509e-03 0.00e+00 1.42e-05  -9.3 3.15e-02    -  1.00e+00 1.14e-01f  3
  48  6.0863534e-03 0.00e+00 2.41e-05  -8.8 7.19e-03    -  1.00e+00 1.25e-01f  4
Warning: Cutting back alpha due to evaluation error
  49  6.0863410e-03 0.00e+00 8.24e-06  -9.0 1.07e-02    -  1.00e+00 5.00e-01f  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  50  6.0863454e-03 0.00e+00 1.08e-05  -8.8 2.32e-02    -  1.00e+00 1.25e-01f  4
  51  6.0863442e-03 0.00e+00 9.13e-06  -8.9 6.99e-03    -  1.00e+00 2.50e-01h  3
Warning: Cutting back alpha due to evaluation error
  52  6.0863397e-03 0.00e+00 7.32e-06  -8.9 9.17e-03    -  1.00e+00 2.50e-01f  3
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  53  6.0863348e-03 0.00e+00 3.29e-05  -9.6 1.80e-02    -  1.00e+00 9.90e-02f  4
  54  6.0863263e-03 0.00e+00 8.82e-06 -10.1 8.72e-03    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
  55  6.0863259e-03 0.00e+00 1.36e-05  -9.3 1.96e-02    -  1.00e+00 6.25e-02f  5
Warning: Cutting back alpha due to evaluation error
  56  6.0863312e-03 0.00e+00 7.56e-06  -8.8 2.05e-02    -  1.00e+00 1.25e-01f  4
  57  6.0863353e-03 0.00e+00 9.66e-06  -9.0 7.72e-03    -  1.00e+00 5.00e-01f  2
  58  6.0863339e-03 0.00e+00 7.89e-06  -9.0 1.06e-02    -  1.00e+00 1.25e-01f  4
  59  6.0863327e-03 0.00e+00 4.72e-06  -9.0 3.03e-03    -  1.00e+00 2.50e-01h  3
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  60  6.0863427e-03 0.00e+00 2.13e-04  -9.0 9.71e-03    -  1.00e+00 2.50e-01h  3
  61  6.0863379e-03 0.00e+00 3.37e-05  -9.0 9.35e-03    -  1.00e+00 2.50e-01f  3
Warning: Cutting back alpha due to evaluation error
  62  6.0863368e-03 0.00e+00 1.25e-05  -9.0 5.30e-02    -  3.39e-01 1.25e-01f  4
  63  6.0863354e-03 0.00e+00 9.27e-06  -9.0 3.15e-03    -  1.00e+00 6.25e-02f  5
  64  6.0863308e-03 0.00e+00 1.09e-05  -9.0 2.24e-03    -  1.00e+00 1.00e+00f  1
  65  6.0863490e-03 0.00e+00 1.42e-05  -9.0 6.53e-04    -  1.00e+00 1.00e+00h  1
  66  6.0863303e-03 0.00e+00 9.20e-06  -9.0 6.22e-04    -  1.00e+00 1.00e+00f  1
  67  6.0863298e-03 0.00e+00 8.80e-06  -9.0 1.39e-03    -  1.00e+00 1.00e+00h  1
  68  6.0863297e-03 0.00e+00 4.92e-06  -9.0 3.17e-02    -  1.19e-01 3.41e-03f  8
  69  6.0863298e-03 0.00e+00 9.61e-07  -9.0 9.43e-04    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  70  6.0863298e-03 0.00e+00 1.10e-06  -9.0 2.09e-03    -  1.00e+00 1.25e-01h  4
  71  6.0863302e-03 0.00e+00 1.03e-06  -9.0 2.51e-03    -  1.00e+00 5.00e-01h  2
  72  6.0863302e-03 0.00e+00 6.47e-07  -9.0 8.14e-04    -  1.00e+00 3.12e-02h  6
  73  6.0863299e-03 0.00e+00 1.90e-07  -9.0 7.00e-04    -  1.00e+00 1.00e+00h  1
  74  6.0863298e-03 0.00e+00 1.29e-07  -9.0 1.41e-03    -  1.00e+00 3.12e-02h  6
  75  6.0863298e-03 0.00e+00 9.28e-08  -9.0 3.70e-05    -  1.00e+00 1.00e+00h  1
  76  6.0863299e-03 0.00e+00 8.20e-07  -9.0 2.76e-04    -  1.00e+00 1.25e-01h  4
  77  6.0863299e-03 0.00e+00 7.60e-07  -9.0 2.40e-04    -  1.00e+00 4.88e-04h 12
  78  6.0863299e-03 0.00e+00 3.92e-08  -9.0 2.53e-05    -  1.00e+00 1.00e+00h  1
  79  6.0863299e-03 0.00e+00 1.30e-07  -9.0 3.74e-05    -  1.00e+00 1.00e+00H  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  80  6.0863299e-03 0.00e+00 2.88e-07  -9.0 9.30e-05    -  1.00e+00 1.00e+00h  1
  81  6.0863299e-03 0.00e+00 3.27e-07  -9.0 7.48e-05    -  1.00e+00 5.00e-01h  2
  82  6.0863299e-03 0.00e+00 1.75e-07  -9.0 2.27e-04    -  1.00e+00 5.00e-01h  2
  83  6.0863299e-03 0.00e+00 1.55e-07  -9.0 1.60e-04    -  1.00e+00 1.25e-01h  4
  84  6.0863299e-03 0.00e+00 3.73e-07  -9.0 5.68e-05    -  1.00e+00 1.25e-01h  4
  85  6.0863299e-03 0.00e+00 9.42e-08  -9.0 7.03e-05    -  1.00e+00 2.50e-01h  3
  86  6.0863299e-03 0.00e+00 1.19e-07  -9.0 7.60e-04    -  1.00e+00 1.25e-01h  4

Number of Iterations....: 86

                                   (scaled)                 (unscaled)
Objective...............:   6.0863298686051068e-03    6.0863298686051068e-03
Dual infeasibility......:   1.1894254191351897e-07    1.1894254191351897e-07
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0387597767821062e-09    1.0387597767821062e-09
Overall NLP error.......:   1.1894254191351897e-07    1.1894254191351897e-07


Number of objective function evaluations             = 248
Number of objective gradient evaluations             = 87
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 248
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 87
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.200

EXIT: Solved To Acceptable Level.
This is Ipopt version 3.14.19, running with linear solver MUMPS 5.9.0.

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       42
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:       42
                     variables with only lower bounds:        0
                variables with lower and upper bounds:       42
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        1
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        1

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  6.1439817e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  6.1456757e-03 0.00e+00 4.19e-03  -6.3 7.81e-03    -  9.72e-01 1.00e+00h  1
   2  6.1446369e-03 0.00e+00 5.49e-05  -7.9 8.41e-04    -  9.87e-01 1.00e+00f  1
   3  6.1621399e-03 0.00e+00 1.94e-06  -5.4 1.36e-02    -  1.00e+00 1.00e+00f  1
   4  6.2078807e-03 0.00e+00 1.15e-03  -5.5 8.49e-01    -  4.63e-01 7.23e-01f  1
   5  6.1747995e-03 0.00e+00 5.75e-05  -5.5 1.66e-01    -  3.15e-02 1.00e+00f  1
   6  6.1686888e-03 0.00e+00 2.70e-05  -5.5 7.05e-02    -  1.00e+00 1.00e+00f  1
   7  6.1018445e-03 0.00e+00 1.48e-05  -8.3 7.07e-02    -  6.96e-01 9.49e-01f  1
   8  6.1028460e-03 0.00e+00 2.76e-05  -6.5 1.34e-01    -  9.76e-01 1.00e+00f  1
   9  6.1006186e-03 0.00e+00 3.87e-05  -6.6 1.10e-01    -  1.00e+00 1.00e+00f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10  6.0957524e-03 0.00e+00 9.30e-05  -7.2 6.25e-02    -  1.00e+00 1.00e+00f  1
  11  6.0980278e-03 0.00e+00 3.09e-05  -6.7 6.14e-02    -  1.00e+00 1.00e+00f  1
  12  6.0954678e-03 0.00e+00 2.34e-05  -6.8 4.91e-02    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  13  6.0926482e-03 0.00e+00 2.27e-05  -7.2 1.37e-01    -  1.00e+00 4.54e-01f  2
  14  6.0910227e-03 0.00e+00 2.59e-05  -8.1 2.13e-01    -  1.00e+00 2.20e-01f  2
  15  6.1078888e-03 0.00e+00 2.89e-05  -6.4 3.64e-01    -  1.00e+00 1.00e+00f  1
  16  6.1037538e-03 0.00e+00 2.80e-05  -6.4 2.32e-01    -  1.00e+00 5.00e-01f  2
  17  6.1022228e-03 0.00e+00 2.33e-05  -6.4 2.05e-01    -  1.00e+00 3.93e-01f  2
  18  6.1003475e-03 0.00e+00 1.77e-05  -6.4 7.23e-02    -  1.00e+00 1.00e+00f  1
  19  6.1001383e-03 0.00e+00 1.10e-05  -6.4 2.49e-02    -  1.00e+00 5.00e-01f  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20  6.1000772e-03 0.00e+00 2.24e-06  -6.4 1.07e-02    -  1.00e+00 1.00e+00f  1
  21  6.0895239e-03 0.00e+00 9.04e-06  -9.0 1.16e-01    -  8.06e-01 9.81e-01f  1
Warning: Cutting back alpha due to evaluation error
  22  6.0893402e-03 0.00e+00 5.39e-05  -8.1 1.51e-01    -  1.00e+00 1.67e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  23  6.0893250e-03 0.00e+00 5.83e-05  -8.9 9.25e-02    -  1.00e+00 7.81e-03f  8
Warning: Cutting back alpha due to evaluation error
  24  6.0885931e-03 0.00e+00 3.20e-05  -7.6 4.31e-01    -  1.00e+00 1.33e-01f  2
  25  6.0885213e-03 0.00e+00 3.90e-05  -8.4 5.39e-02    -  1.00e+00 2.25e-01f  2
  26  6.0882651e-03 0.00e+00 3.51e-05  -9.6 7.66e-02    -  1.00e+00 3.01e-01f  2
  27  6.0881861e-03 0.00e+00 2.89e-05 -11.0 1.01e-01    -  1.57e-01 8.35e-02f  2
  28  6.0879318e-03 0.00e+00 2.94e-05 -10.2 2.69e-02    -  1.00e+00 1.00e+00f  1
  29  6.0882825e-03 0.00e+00 1.11e-04  -7.8 3.78e-02    -  7.54e-01 2.79e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30  6.0882470e-03 0.00e+00 8.84e-05  -8.1 6.21e-03    -  4.54e-01 6.25e-02f  5
  31  6.0880829e-03 0.00e+00 4.50e-05  -8.1 7.89e-03    -  8.83e-01 4.57e-01f  2
  32  6.0880831e-03 0.00e+00 2.91e-05  -8.1 2.97e-03    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  33  6.0880411e-03 0.00e+00 2.48e-05  -8.1 1.34e-02    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  34  6.0880352e-03 0.00e+00 2.01e-05  -8.1 1.19e-02    -  1.00e+00 5.46e-02f  5
  35  6.0880495e-03 0.00e+00 2.39e-05  -8.1 2.67e-03    -  1.00e+00 1.00e+00f  1
  36  6.0880286e-03 0.00e+00 1.37e-05  -8.1 2.91e-03    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  37  6.0880268e-03 0.00e+00 8.65e-06  -8.1 3.25e-03    -  1.00e+00 1.25e-01f  4
  38  6.0880316e-03 0.00e+00 3.15e-06  -8.1 1.33e-03    -  1.00e+00 1.00e+00h  1
  39  6.0881471e-03 0.00e+00 7.07e-05  -8.1 4.54e-03    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  40  6.0880343e-03 0.00e+00 1.25e-05  -8.1 3.57e-03    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  41  6.0880335e-03 0.00e+00 6.35e-06  -8.1 4.67e-03    -  1.00e+00 3.12e-02h  6
  42  6.0880340e-03 0.00e+00 9.91e-07  -8.1 1.65e-04    -  1.00e+00 1.00e+00h  1
  43  6.0880356e-03 0.00e+00 4.59e-06  -8.1 8.47e-04    -  1.00e+00 1.00e+00h  1
  44  6.0880444e-03 0.00e+00 1.18e-05  -8.1 2.71e-03    -  1.00e+00 1.00e+00h  1
  45  6.0880384e-03 0.00e+00 1.86e-05  -8.1 1.36e-03    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  46  6.0880464e-03 0.00e+00 1.39e-05  -8.1 8.03e-03    -  1.00e+00 5.00e-01f  2
  47  6.0880412e-03 0.00e+00 1.37e-05  -8.1 2.60e-03    -  1.00e+00 2.50e-01h  3
  48  6.0880407e-03 0.00e+00 1.67e-05  -8.1 7.81e-03    -  1.00e+00 6.25e-02h  5
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  49  6.0880373e-03 0.00e+00 1.06e-05  -8.1 7.01e-03    -  1.00e+00 6.25e-02f  5
Warning: Cutting back alpha due to evaluation error
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  50  6.0880347e-03 0.00e+00 3.40e-06  -8.1 2.11e-03    -  1.00e+00 2.50e-01h  3
  51  6.0880360e-03 0.00e+00 2.59e-06  -8.1 7.57e-03    -  1.00e+00 5.00e-01h  2
Warning: Cutting back alpha due to evaluation error
  52  6.0880395e-03 0.00e+00 4.78e-05  -8.1 1.03e-03    -  1.00e+00 5.00e-01h  2
  53  6.0880345e-03 0.00e+00 6.28e-06  -8.1 1.56e-03    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  54  6.0880360e-03 0.00e+00 1.77e-05  -8.1 1.38e-03    -  1.00e+00 2.50e-01h  3
Warning: Cutting back alpha due to evaluation error
  55  6.0880360e-03 0.00e+00 1.76e-05  -8.1 7.56e-04    -  1.00e+00 7.63e-06h 18
  56  6.0880356e-03 0.00e+00 6.39e-06  -8.1 2.58e-03    -  1.00e+00 1.56e-02f  7
  57  6.0880345e-03 0.00e+00 1.93e-06  -8.1 1.44e-04    -  1.00e+00 1.00e+00h  1
  58  6.0880347e-03 0.00e+00 1.00e-06  -8.1 2.51e-04    -  1.00e+00 2.50e-01h  3
  59  6.0880342e-03 0.00e+00 6.86e-07  -8.1 3.11e-04    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  60  6.0880341e-03 0.00e+00 2.64e-07  -8.1 6.39e-04    -  1.00e+00 6.25e-02h  5
  61  6.0880336e-03 0.00e+00 7.87e-07  -8.1 3.06e-04    -  1.00e+00 5.00e-01h  2
  62  6.0880336e-03 0.00e+00 1.82e-06  -8.1 2.11e-03    -  1.00e+00 3.12e-02h  6
  63  6.0880336e-03 0.00e+00 1.97e-06  -8.1 3.75e-03    -  1.00e+00 1.25e-01h  4
  64  6.0880336e-03 0.00e+00 2.23e-06  -8.1 9.61e-04    -  1.00e+00 1.25e-01h  4
  65  6.0880335e-03 0.00e+00 8.46e-07  -8.1 7.67e-04    -  1.00e+00 1.25e-01h  4
  66  6.0880333e-03 0.00e+00 8.75e-07  -8.1 2.46e-03    -  1.00e+00 2.50e-01h  3
  67  6.0880332e-03 0.00e+00 1.14e-06  -8.1 2.03e-04    -  1.00e+00 2.50e-01h  3
  68  6.0880332e-03 0.00e+00 1.25e-06  -8.1 1.80e-04    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  69  6.0880332e-03 0.00e+00 2.68e-06  -8.1 1.97e-03    -  1.00e+00 3.12e-02h  6
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  70  6.0880334e-03 0.00e+00 9.41e-07  -8.1 7.13e-04    -  1.00e+00 1.25e-01h  4
  71  6.0880333e-03 0.00e+00 7.10e-07  -8.1 5.96e-05    -  1.00e+00 2.50e-01h  3
  72  6.0880332e-03 0.00e+00 4.63e-07  -8.1 6.18e-05    -  1.00e+00 1.00e+00h  1
  73  6.0880333e-03 0.00e+00 1.53e-07  -8.1 7.22e-04    -  1.00e+00 6.25e-02h  5
  74  6.0880332e-03 0.00e+00 1.20e-07  -8.1 2.16e-04    -  1.00e+00 1.25e-01h  4
  75  6.0880331e-03 0.00e+00 7.36e-07  -8.1 1.11e-04    -  1.00e+00 1.00e+00H  1
  76  6.0880331e-03 0.00e+00 7.27e-07  -8.1 2.02e-04    -  1.00e+00 1.49e-08h 27
Warning: Cutting back alpha due to evaluation error
  77  6.0880331e-03 0.00e+00 1.17e-06  -8.1 2.13e-03    -  1.00e+00 7.81e-03h  8
  78  6.0880331e-03 0.00e+00 8.30e-07  -8.1 1.96e-04    -  1.00e+00 1.25e-01h  4
  79  6.0880331e-03 0.00e+00 8.06e-07  -8.1 2.13e-04    -  1.00e+00 1.95e-03h 10
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  80  6.0880331e-03 0.00e+00 8.45e-07  -8.1 9.62e-04    -  1.00e+00 1.53e-05h 17
  81  6.0880330e-03 0.00e+00 5.98e-06  -8.1 2.84e-04    -  1.00e+00 1.00e+00H  1
  82  6.0880331e-03 0.00e+00 3.33e-07  -8.1 2.41e-04    -  1.00e+00 1.00e+00h  1
  83  6.0880331e-03 0.00e+00 8.22e-07  -8.1 5.41e-05    -  1.00e+00 5.00e-01h  2
  84  6.0880331e-03 0.00e+00 2.63e-07  -8.1 7.57e-05    -  1.00e+00 3.12e-02h  6
  85  6.0880331e-03 0.00e+00 2.89e-07  -8.1 2.89e-05    -  1.00e+00 5.00e-01h  2
  86  6.0880331e-03 0.00e+00 1.23e-07  -8.1 6.10e-05    -  1.00e+00 6.25e-02h  5
  87  6.0880331e-03 0.00e+00 1.30e-07  -8.1 5.46e-05    -  1.00e+00 1.00e+00h  1
  88  6.0880330e-03 0.00e+00 1.16e-06  -8.1 1.50e-04    -  1.00e+00 1.00e+00h  1
  89  6.0880330e-03 0.00e+00 1.04e-07  -8.1 1.26e-04    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  90  6.0880331e-03 0.00e+00 4.43e-07  -8.1 7.00e-05    -  1.00e+00 2.50e-01h  3
  91  6.0880331e-03 0.00e+00 5.99e-07  -8.1 2.69e-05    -  1.00e+00 1.00e+00h  1
  92  6.0880330e-03 0.00e+00 9.37e-08  -8.1 2.77e-04    -  1.00e+00 3.12e-02h  6
  93  6.0880330e-03 0.00e+00 1.61e-07  -8.1 2.33e-05    -  1.00e+00 1.00e+00h  1
  94  6.0880330e-03 0.00e+00 1.26e-07  -8.1 3.93e-04    -  1.00e+00 6.25e-02h  5
  95  6.0880330e-03 0.00e+00 5.55e-08  -8.1 4.48e-05    -  1.00e+00 5.00e-01h  2
Warning: Cutting back alpha due to evaluation error
  96  6.0879552e-03 0.00e+00 2.87e-05  -9.0 9.92e-03    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  97  6.0879455e-03 0.00e+00 1.46e-04  -9.0 5.14e-02    -  1.00e+00 4.75e-02f  4
Warning: Cutting back alpha due to evaluation error
  98  6.0879299e-03 0.00e+00 3.53e-05  -9.0 4.32e-02    -  1.00e+00 2.13e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  99  6.0879019e-03 0.00e+00 3.26e-05  -9.8 7.10e-02    -  1.00e+00 1.03e-01f  3
Warning: Cutting back alpha due to evaluation error
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 100  6.0878908e-03 0.00e+00 2.08e-05 -11.0 4.37e-02    -  4.57e-01 6.65e-02f  3
 101  6.0879029e-03 0.00e+00 2.74e-05  -8.2 2.99e-02    -  2.55e-01 5.19e-02f  3
 102  6.0878809e-03 0.00e+00 1.51e-05  -8.8 4.74e-03    -  8.50e-01 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 103  6.0878713e-03 0.00e+00 1.81e-05 -10.2 2.62e-02    -  1.00e+00 1.28e-01f  3
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 104  6.0878708e-03 0.00e+00 1.42e-04 -11.0 2.85e-02    -  1.00e+00 5.39e-03f  7
 105  6.0878369e-03 0.00e+00 1.08e-05  -9.1 2.73e-03    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 106  6.0878832e-03 0.00e+00 1.72e-04  -8.0 6.38e-02    -  1.00e+00 7.65e-02f  4
 107  6.0879537e-03 0.00e+00 2.81e-05  -8.2 8.71e-03    -  7.54e-01 5.00e-01f  2
 108  6.0879676e-03 0.00e+00 1.37e-05  -8.2 1.19e-02    -  7.50e-01 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
 109  6.0879684e-03 0.00e+00 2.16e-05  -8.2 1.23e-02    -  1.00e+00 2.50e-01f  3
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 110  6.0879667e-03 0.00e+00 2.43e-05  -8.2 9.99e-03    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 111  6.0879625e-03 0.00e+00 1.11e-05  -8.2 2.65e-02    -  1.00e+00 5.76e-02f  5
 112  6.0879744e-03 0.00e+00 2.76e-05  -8.2 4.23e-03    -  1.00e+00 2.50e-01h  3
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 113  6.0879797e-03 0.00e+00 9.24e-06  -8.2 1.33e-02    -  1.00e+00 2.50e-01f  3
 114  6.0879807e-03 0.00e+00 1.68e-05  -8.2 1.90e-02    -  1.00e+00 3.12e-02h  6
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 115  6.0879797e-03 0.00e+00 1.16e-05  -8.2 6.44e-03    -  1.00e+00 1.25e-01h  4
 116  6.0879825e-03 0.00e+00 8.21e-06  -8.2 1.21e-03    -  1.00e+00 1.00e+00H  1
 117  6.0879774e-03 0.00e+00 7.83e-06  -8.2 2.70e-03    -  1.00e+00 5.00e-01f  2
 118  6.0879885e-03 0.00e+00 1.82e-05  -8.2 2.23e-03    -  1.00e+00 5.00e-01h  2
 119  6.0879775e-03 0.00e+00 1.09e-05  -8.2 7.20e-04    -  1.00e+00 1.00e+00f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 120  6.0879765e-03 0.00e+00 1.87e-05  -8.2 2.85e-03    -  1.00e+00 2.50e-01h  3
 121  6.0879849e-03 0.00e+00 2.28e-05  -8.2 2.01e-03    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 122  6.0879836e-03 0.00e+00 1.93e-05  -8.2 4.42e-03    -  1.00e+00 3.12e-02h  6
Warning: Cutting back alpha due to evaluation error
 123  6.0879836e-03 0.00e+00 2.02e-05  -8.2 1.90e-03    -  1.00e+00 1.53e-05h 17
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 124  6.0879835e-03 0.00e+00 1.88e-05  -8.2 2.33e-03    -  1.00e+00 9.77e-04h 11
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 125  6.0879797e-03 0.00e+00 9.06e-06  -8.2 1.68e-03    -  1.00e+00 2.50e-01f  3
 126  6.0879776e-03 0.00e+00 8.06e-06  -8.2 2.08e-03    -  1.00e+00 2.50e-01h  3
 127  6.0879748e-03 0.00e+00 1.11e-05  -8.2 1.43e-03    -  1.00e+00 5.00e-01h  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 128  6.0879747e-03 0.00e+00 7.63e-06  -8.2 2.73e-03    -  1.00e+00 6.25e-02h  5
 129  6.0879774e-03 0.00e+00 1.43e-05  -8.2 3.22e-04    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 130  6.0879752e-03 0.00e+00 4.77e-06  -8.2 3.12e-04    -  1.00e+00 1.00e+00h  1
 131  6.0879751e-03 0.00e+00 6.95e-07  -8.2 5.84e-05    -  1.00e+00 1.00e+00h  1
 132  6.0879750e-03 0.00e+00 1.21e-06  -8.2 3.29e-05    -  1.00e+00 1.00e+00h  1
 133  6.0879750e-03 0.00e+00 5.61e-07  -8.2 1.95e-04    -  1.00e+00 1.00e+00h  1
 134  6.0879749e-03 0.00e+00 3.68e-06  -8.2 1.06e-03    -  1.00e+00 1.25e-01h  4
 135  6.0879749e-03 0.00e+00 2.07e-06  -8.2 2.41e-04    -  1.00e+00 6.25e-02h  5
 136  6.0879750e-03 0.00e+00 2.79e-07  -8.2 8.32e-05    -  1.00e+00 5.00e-01h  2
 137  6.0879749e-03 0.00e+00 7.00e-07  -8.2 6.15e-05    -  1.00e+00 5.00e-01h  2
 138  6.0879750e-03 0.00e+00 1.32e-07  -8.2 9.11e-05    -  1.00e+00 1.00e+00h  1
 139  6.0879749e-03 0.00e+00 1.43e-06  -8.2 1.77e-04    -  1.00e+00 2.50e-01h  3
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 140  6.0879746e-03 0.00e+00 1.50e-06  -8.2 2.39e-04    -  1.00e+00 1.00e+00h  1
 141  6.0879745e-03 0.00e+00 2.09e-07  -8.2 4.01e-04    -  1.00e+00 1.25e-01h  4
 142  6.0879746e-03 0.00e+00 6.15e-07  -8.2 1.41e-04    -  1.00e+00 2.50e-01h  3
 143  6.0879746e-03 0.00e+00 7.26e-07  -8.2 1.38e-03    -  1.00e+00 6.25e-02h  5
 144  6.0879747e-03 0.00e+00 5.94e-07  -8.2 9.67e-04    -  1.00e+00 1.25e-01h  4
 145  6.0879747e-03 0.00e+00 1.62e-07  -8.2 3.06e-04    -  1.00e+00 1.25e-01h  4
 146  6.0879746e-03 0.00e+00 1.37e-06  -8.2 7.12e-05    -  1.00e+00 5.00e-01h  2
 147  6.0879746e-03 0.00e+00 5.24e-07  -8.2 1.24e-04    -  1.00e+00 5.00e-01h  2
 148  6.0879747e-03 0.00e+00 1.39e-06  -8.2 1.65e-04    -  1.00e+00 1.25e-01h  4
 149  6.0879747e-03 0.00e+00 1.26e-06  -8.2 1.06e-04    -  1.00e+00 1.56e-02h  7
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 150  6.0879747e-03 0.00e+00 1.31e-06  -8.2 2.76e-04    -  1.00e+00 3.91e-03h  9
 151  6.0879748e-03 0.00e+00 1.40e-05  -8.2 2.59e-04    -  1.00e+00 1.00e+00w  1
 152  6.0879747e-03 0.00e+00 3.75e-07  -8.2 2.00e-04    -  1.00e+00 1.00e+00w  1
 153  6.0879747e-03 0.00e+00 9.77e-07  -8.2 5.01e-05    -  1.00e+00 1.00e+00w  1
 154  6.0879747e-03 0.00e+00 1.24e-07  -8.2 1.20e-04    -  1.00e+00 1.25e-01h  3
Buckling-constrained result:
  obj = 0.006088050632535261
  vol = -1.8081848625617347e-6

The SDPBarrierAlg uses an interior-point method with log-barrier for PSD constraints. IPOPT solves the continuous subproblems.

Check Stability

S1 = buckling_matrix_constr(r1.minimizer)
S2 = buckling_matrix_constr(r2.minimizer)

ev1 = eigen(S1).values
ev2 = eigen(S2).values

println("ComplianceFun-only min eigenvalue: $(minimum(ev1))")
println("Buckling-constrained min eigenvalue: $(minimum(ev2))")
println("Design is stable: $(minimum(ev2) ≥ -1e-6)")
ComplianceFun-only min eigenvalue: -1.799980206343895
Buckling-constrained min eigenvalue: 3.0814533531764934e-12
Design is stable: true

The buckling-constrained design should have non-negative eigenvalues (stable under load), while the compliance-only design may have negative eigenvalues (unstable).

Visualization

using Makie, WGLMakie

fig1 = visualize(problem; static=true, u=solver.u, topology=r1.minimizer, default_exagg_scale=0.0)
fig2 = visualize(problem; static=true, u=solver.u, topology=r2.minimizer, default_exagg_scale=0.0)
display_app(fig1)
display_app(fig2)
undeformed mesh
load arrows
support arrows
(a) Buckling-constrained truss design (top) vs compliance-only (bottom)
undeformed mesh
load arrows
support arrows
(b)
Figure 1

The buckling-constrained design typically shows thicker compression members and more stable load paths compared to the compliance-only design.