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)
= assemble_k(Kσs)
= 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   9.3e-03   4.7e-04   0.0e+00   8.1e-04
[ Info:      3   7.9e-03   1.5e-03   0.0e+00   3.8e-04
[ Info:      4   6.8e-03   1.1e-03   0.0e+00   1.2e-03
[ Info:      5   6.2e-03   6.0e-04   0.0e+00   1.9e-04
[ Info:      6   6.2e-03   6.6e-06   0.0e+00   6.0e-05
ComplianceFun-only result:
  obj = 0.006161931529729129
  vol = -0.016356884179759223

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.3268361058670968e+02   -2.3268361058670968e+02
Dual infeasibility......:   9.0860468237565487e-10    9.0860468237565487e-10
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000000000001e-11    1.0000000000000001e-11
Overall NLP error.......:   9.0860468237565487e-10    9.0860468237565487e-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                               = 9.889

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.3259812936628055e+01   -2.3259812936628055e+01
Dual infeasibility......:   1.0679504172484743e-09    1.0679504172484743e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000000003840e-11    1.0000000000003840e-11
Overall NLP error.......:   1.0679504172484743e-09    1.0679504172484743e-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.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.2330595622710363e-09    1.2330595622710363e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000000000085e-11    1.0000000000000085e-11
Overall NLP error.......:   1.2330595622710363e-09    1.2330595622710363e-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.2382205830251009e-01   -2.2382205830251009e-01
Dual infeasibility......:   4.7684535055537021e-09    4.7684535055537021e-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.7684535055537021e-09    4.7684535055537021e-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.5954029329887522e-02   -1.5954029329887522e-02
Dual infeasibility......:   8.0383938352728991e-09    8.0383938352728991e-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.0383938352728991e-09    8.0383938352728991e-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.023

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.9318503221212149e-03    3.9318503221212149e-03
Dual infeasibility......:   5.2873032923090090e-09    5.2873032923090090e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000171411304677e-11    1.0000171411304677e-11
Overall NLP error.......:   5.2873032923090090e-09    5.2873032923090090e-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.019

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.8835389e-03 0.00e+00 3.52e-06  -7.4 5.97e-03    -  1.00e+00 1.00e+00H  1
  19  5.8835293e-03 0.00e+00 1.02e-06  -7.4 2.98e-03    -  1.00e+00 1.00e+00f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20  5.8835310e-03 0.00e+00 4.34e-07  -7.4 2.10e-03    -  1.00e+00 1.00e+00h  1
  21  5.8835291e-03 0.00e+00 1.34e-06  -7.4 4.88e-04    -  1.00e+00 1.00e+00h  1
  22  5.8835302e-03 0.00e+00 3.86e-08  -7.4 3.90e-04    -  1.00e+00 1.00e+00h  1
  23  5.8827373e-03 0.00e+00 8.36e-07  -9.0 4.24e-03    -  1.00e+00 1.00e+00f  1
  24  5.8827252e-03 0.00e+00 4.84e-06 -10.6 7.00e-03    -  1.00e+00 1.00e+00f  1
  25  5.8827218e-03 0.00e+00 2.05e-06 -10.8 4.95e-03    -  1.00e+00 5.00e-01h  2
  26  5.8827155e-03 0.00e+00 3.20e-07 -11.0 3.72e-03    -  1.00e+00 1.00e+00h  1
  27  5.8827155e-03 0.00e+00 1.31e-07 -11.0 1.17e-03    -  1.00e+00 2.50e-01h  3
  28  5.8827154e-03 0.00e+00 3.25e-08 -11.0 5.47e-04    -  1.00e+00 1.00e+00h  1
  29  5.8827154e-03 0.00e+00 1.30e-07 -11.0 1.39e-04    -  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 1.49e-08 -11.0 1.51e-04    -  1.00e+00 1.00e+00h  1
  31  5.8827154e-03 0.00e+00 4.37e-08 -11.0 3.90e-05    -  1.00e+00 1.00e+00h  1
  32  5.8827154e-03 0.00e+00 4.14e-09 -11.0 2.26e-05    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 32

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


Number of objective function evaluations             = 43
Number of objective gradient evaluations             = 33
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 43
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.063

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.1339927e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  6.1354980e-03 0.00e+00 2.73e-03  -6.3 5.02e-03    -  9.79e-01 1.00e+00h  1
   2  6.1342220e-03 0.00e+00 2.91e-05  -8.0 4.10e-04    -  9.89e-01 1.00e+00f  1
   3  6.1149771e-03 0.00e+00 1.31e-06  -5.8 7.68e-03    -  1.00e+00 1.00e+00f  1
   4  6.0751690e-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.0729703e-03 0.00e+00 1.02e-05  -8.1 8.65e-02    -  9.99e-01 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
   6  6.0710986e-03 0.00e+00 2.50e-05  -8.0 6.94e-01    -  1.00e+00 1.75e-01f  2
   7  6.0707728e-03 0.00e+00 1.89e-05  -7.5 2.74e-01    -  9.99e-01 1.02e-01f  2
Warning: Cutting back alpha due to evaluation error
   8  6.0701677e-03 0.00e+00 5.88e-05  -7.7 4.71e-02    -  1.00e+00 4.59e-01f  2
   9  6.0704174e-03 0.00e+00 2.35e-05  -7.1 5.52e-02    -  1.00e+00 2.05e-01f  3
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10  6.0706560e-03 0.00e+00 5.99e-06  -7.2 2.33e-02    -  1.00e+00 1.00e+00f  1
  11  6.0706473e-03 0.00e+00 6.81e-06  -7.2 8.14e-03    -  1.00e+00 2.50e-01f  3
  12  6.0706078e-03 0.00e+00 5.23e-06  -7.2 1.50e-03    -  1.00e+00 1.00e+00f  1
  13  6.0705966e-03 0.00e+00 2.83e-06  -7.2 7.94e-04    -  1.00e+00 1.00e+00h  1
  14  6.0705832e-03 0.00e+00 1.17e-06  -7.2 1.20e-03    -  1.00e+00 1.00e+00h  1
  15  6.0705880e-03 0.00e+00 4.21e-07  -7.2 6.00e-04    -  1.00e+00 1.00e+00h  1
  16  6.0692743e-03 0.00e+00 1.09e-05  -9.0 4.22e-02    -  9.49e-01 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  17  6.0696533e-03 0.00e+00 5.51e-05  -7.8 8.46e-02    -  1.00e+00 2.64e-01f  2
  18  6.0694770e-03 0.00e+00 1.03e-05  -7.9 2.64e-02    -  9.46e-01 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  19  6.0694715e-03 0.00e+00 3.09e-06  -7.9 2.25e-02    -  1.00e+00 1.25e-01f  4
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20  6.0694712e-03 0.00e+00 3.68e-06  -7.9 5.48e-03    -  1.00e+00 2.50e-01h  3
  21  6.0694652e-03 0.00e+00 3.29e-06  -7.9 4.43e-03    -  1.00e+00 1.00e+00h  1
  22  6.0694974e-03 0.00e+00 1.29e-05  -7.9 1.10e-02    -  1.00e+00 5.00e-01h  2
  23  6.0694645e-03 0.00e+00 1.55e-06  -7.9 5.07e-03    -  1.00e+00 1.00e+00f  1
  24  6.0694806e-03 0.00e+00 4.38e-06  -7.9 4.70e-03    -  1.00e+00 1.00e+00H  1
  25  6.0694648e-03 0.00e+00 1.48e-06  -7.9 3.66e-03    -  1.00e+00 1.00e+00f  1
  26  6.0694644e-03 0.00e+00 1.18e-06  -7.9 3.05e-03    -  1.00e+00 1.25e-01h  4
  27  6.0694636e-03 0.00e+00 2.31e-07  -7.9 2.72e-04    -  1.00e+00 1.00e+00h  1
  28  6.0694639e-03 0.00e+00 8.75e-07  -7.9 1.50e-04    -  1.00e+00 5.00e-01h  2
  29  6.0694637e-03 0.00e+00 8.08e-08  -7.9 5.40e-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  6.0692482e-03 0.00e+00 1.31e-06  -9.0 3.36e-03    -  1.00e+00 1.00e+00f  1
  31  6.0692461e-03 0.00e+00 1.90e-06 -10.3 4.09e-02    -  1.00e+00 6.25e-02f  5
  32  6.0692303e-03 0.00e+00 3.53e-06 -10.7 4.05e-03    -  1.00e+00 1.00e+00f  1
  33  6.0692300e-03 0.00e+00 2.63e-06 -11.0 2.67e-02    -  1.00e+00 1.25e-01f  4
  34  6.0692478e-03 0.00e+00 9.69e-06 -11.0 2.71e-03    -  1.00e+00 1.00e+00h  1
  35  6.0692267e-03 0.00e+00 7.53e-07 -11.0 3.08e-03    -  1.00e+00 1.00e+00f  1
  36  6.0692272e-03 0.00e+00 2.98e-06 -11.0 1.47e-03    -  1.00e+00 1.00e+00h  1
  37  6.0692271e-03 0.00e+00 1.50e-06 -11.0 6.18e-03    -  1.00e+00 6.25e-02h  5
  38  6.0692270e-03 0.00e+00 1.41e-06 -11.0 1.23e-03    -  1.00e+00 1.00e+00h  1
  39  6.0692269e-03 0.00e+00 1.31e-06 -11.0 9.18e-04    -  1.00e+00 5.00e-01h  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  40  6.0692265e-03 0.00e+00 3.93e-07 -11.0 6.23e-04    -  1.00e+00 1.00e+00h  1
  41  6.0692264e-03 0.00e+00 5.86e-07 -11.0 4.60e-04    -  1.00e+00 2.50e-01h  3
  42  6.0692264e-03 0.00e+00 7.12e-08 -11.0 8.96e-05    -  1.00e+00 1.00e+00h  1
  43  6.0692264e-03 0.00e+00 7.38e-08 -11.0 3.00e-05    -  1.00e+00 1.00e+00h  1
  44  6.0692264e-03 0.00e+00 6.15e-08 -11.0 1.29e-05    -  1.00e+00 1.00e+00h  1
  45  6.0692264e-03 0.00e+00 3.96e-08 -11.0 3.78e-05    -  1.00e+00 5.00e-01h  2
  46  6.0692264e-03 0.00e+00 1.57e-08 -11.0 1.23e-05    -  1.00e+00 1.00e+00h  1
  47  6.0692264e-03 0.00e+00 1.27e-07 -11.0 5.94e-05    -  1.00e+00 1.00e+00h  1
  48  6.0692264e-03 0.00e+00 4.18e-08 -11.0 2.38e-05    -  1.00e+00 1.00e+00h  1
  49  6.0692264e-03 0.00e+00 6.14e-08 -11.0 1.71e-05    -  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.0692264e-03 0.00e+00 6.38e-08 -11.0 1.28e-05    -  1.00e+00 1.00e+00H  1
  51  6.0692264e-03 0.00e+00 1.43e-08 -11.0 1.03e-05    -  1.00e+00 1.00e+00h  1
  52  6.0692264e-03 0.00e+00 1.25e-08 -11.0 1.05e-05    -  1.00e+00 1.00e+00h  1
  53  6.0692264e-03 0.00e+00 2.67e-08 -11.0 1.50e-05    -  1.00e+00 1.00e+00h  1
  54  6.0692264e-03 0.00e+00 1.53e-08 -11.0 2.75e-05    -  1.00e+00 2.50e-01h  3

Number of Iterations....: 54

                                   (scaled)                 (unscaled)
Objective...............:   6.0692263975224287e-03    6.0692263975224287e-03
Dual infeasibility......:   1.5267337844452860e-08    1.5267337844452860e-08
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0006602473331149e-11    1.0006602473331149e-11
Overall NLP error.......:   1.5267337844452860e-08    1.5267337844452860e-08


Number of objective function evaluations             = 112
Number of objective gradient evaluations             = 55
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 112
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 55
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.161

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.1472663e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  6.1485503e-03 0.00e+00 2.96e-03  -6.3 5.48e-03    -  9.78e-01 1.00e+00h  1
   2  6.1473293e-03 0.00e+00 3.52e-05  -8.0 6.86e-04    -  9.88e-01 1.00e+00f  1
   3  6.1491430e-03 0.00e+00 6.86e-06  -5.6 1.87e-02    -  9.97e-01 1.00e+00f  1
   4  6.1563809e-03 0.00e+00 6.03e-05  -5.6 4.86e-01    -  9.06e-01 1.00e+00f  1
   5  6.1554676e-03 0.00e+00 1.12e-05  -5.6 1.13e-01    -  1.00e+00 2.50e-01f  3
   6  6.0970619e-03 0.00e+00 7.96e-06  -8.4 1.30e-01    -  5.54e-01 9.64e-01f  1
   7  6.0971919e-03 0.00e+00 6.22e-05  -6.5 1.82e-01    -  1.00e+00 1.00e+00f  1
   8  6.0947969e-03 0.00e+00 2.10e-05  -6.6 1.25e-01    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
   9  6.0913079e-03 0.00e+00 3.13e-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.0888456e-03 0.00e+00 1.00e-05  -8.6 1.72e-01    -  1.00e+00 4.16e-01f  2
  11  6.0886541e-03 0.00e+00 4.80e-05  -8.0 1.09e-01    -  1.00e+00 2.24e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  12  6.0879062e-03 0.00e+00 6.22e-05  -9.0 6.38e-02    -  1.00e+00 2.49e-01f  3
  13  6.0933100e-03 0.00e+00 3.30e-05  -6.8 1.91e-01    -  1.00e+00 1.00e+00f  1
  14  6.0929716e-03 0.00e+00 1.87e-05  -6.8 9.74e-02    -  1.00e+00 2.17e-01f  3
  15  6.0914869e-03 0.00e+00 1.36e-05  -6.8 7.31e-02    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  16  6.0913617e-03 0.00e+00 1.70e-05  -6.8 6.61e-02    -  7.72e-01 2.24e-01f  3
  17  6.0913125e-03 0.00e+00 2.05e-05  -6.8 8.27e-03    -  1.00e+00 1.00e+00f  1
  18  6.0913150e-03 0.00e+00 4.19e-06  -6.8 5.52e-03    -  1.00e+00 1.00e+00f  1
  19  6.0912725e-03 0.00e+00 1.12e-06  -6.8 1.31e-03    -  1.00e+00 1.00e+00f  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.0888646e-03 0.00e+00 4.33e-06  -9.0 8.99e-02    -  8.55e-01 4.96e-01f  2
Warning: Cutting back alpha due to evaluation error
  21  6.0883843e-03 0.00e+00 5.16e-05  -9.0 2.00e-01    -  9.70e-01 2.17e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  22  6.0877868e-03 0.00e+00 3.63e-04  -9.0 7.89e-02    -  7.94e-01 2.50e-01f  3
  23  6.0877761e-03 0.00e+00 2.12e-05  -7.1 7.47e-02    -  1.00e+00 1.10e-01f  3
  24  6.0866953e-03 0.00e+00 6.00e-05 -11.0 2.74e-02    -  8.90e-01 9.67e-01f  1
Warning: Cutting back alpha due to evaluation error
  25  6.0864184e-03 0.00e+00 2.16e-05 -11.0 5.42e-02    -  8.65e-01 3.61e-01f  2
  26  6.0863734e-03 0.00e+00 1.43e-05 -11.0 7.19e-02    -  1.93e-01 4.68e-02f  3
  27  6.0863439e-03 0.00e+00 3.09e-05 -11.0 1.45e-02    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
  28  6.0863304e-03 0.00e+00 1.32e-05 -11.0 6.07e-02    -  2.88e-01 1.07e-01f  3
  29  6.0865147e-03 0.00e+00 2.37e-05  -8.3 2.10e-02    -  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
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30  6.0865070e-03 0.00e+00 4.99e-05  -8.3 3.67e-02    -  3.97e-01 3.22e-02f  4
  31  6.0864887e-03 0.00e+00 2.24e-05  -8.3 4.54e-03    -  1.00e+00 5.00e-01f  2
  32  6.0864247e-03 0.00e+00 1.19e-05  -8.3 1.20e-02    -  1.00e+00 1.00e+00f  1
  33  6.0864199e-03 0.00e+00 1.50e-05  -8.3 1.20e-02    -  1.00e+00 1.13e-01f  4
  34  6.0864164e-03 0.00e+00 1.17e-05  -8.3 1.99e-03    -  1.00e+00 1.00e+00f  1
  35  6.0864135e-03 0.00e+00 4.90e-06  -8.3 3.45e-03    -  1.00e+00 1.00e+00f  1
  36  6.0864509e-03 0.00e+00 3.01e-05  -8.3 1.78e-03    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
  37  6.0864228e-03 0.00e+00 9.74e-05  -8.3 1.87e-03    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
  38  6.0864097e-03 0.00e+00 6.69e-06  -8.3 1.02e-02    -  3.93e-01 5.90e-02f  5
  39  6.0864079e-03 0.00e+00 2.38e-06  -8.3 5.29e-04    -  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.0864092e-03 0.00e+00 3.38e-06  -8.3 4.29e-04    -  1.00e+00 1.00e+00H  1
  41  6.0864084e-03 0.00e+00 1.71e-06  -8.3 2.31e-04    -  1.00e+00 1.00e+00h  1
  42  6.0864085e-03 0.00e+00 1.27e-06  -8.3 2.93e-05    -  1.00e+00 1.00e+00h  1
  43  6.0864089e-03 0.00e+00 1.09e-06  -8.3 2.44e-04    -  1.00e+00 1.00e+00h  1
  44  6.0864092e-03 0.00e+00 9.73e-07  -8.3 6.65e-04    -  1.00e+00 2.50e-01h  3
  45  6.0864096e-03 0.00e+00 9.97e-07  -8.3 4.44e-04    -  1.00e+00 5.00e-01h  2
  46  6.0864096e-03 0.00e+00 1.22e-06  -8.3 8.72e-05    -  1.00e+00 5.00e-01h  2
  47  6.0864092e-03 0.00e+00 4.84e-07  -8.3 3.62e-04    -  1.00e+00 5.00e-01h  2
  48  6.0864093e-03 0.00e+00 7.55e-07  -8.3 2.99e-04    -  1.00e+00 2.50e-01h  3
  49  6.0864094e-03 0.00e+00 1.33e-07  -8.3 7.93e-05    -  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.0864094e-03 0.00e+00 4.39e-07  -8.3 5.79e-05    -  1.00e+00 2.50e-01h  3
  51  6.0864094e-03 0.00e+00 3.14e-08  -8.3 1.05e-05    -  1.00e+00 1.00e+00h  1
  52  6.0863337e-03 0.00e+00 1.95e-06  -9.0 2.01e-03    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  53  6.0863380e-03 0.00e+00 1.34e-05  -9.0 2.51e-02    -  1.00e+00 7.20e-02h  4
  54  6.0863366e-03 0.00e+00 1.36e-05  -9.0 3.57e-03    -  1.00e+00 5.00e-01h  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  55  6.0863336e-03 0.00e+00 8.69e-06  -9.0 2.93e-03    -  7.02e-01 2.50e-01f  3
  56  6.0863315e-03 0.00e+00 2.85e-06  -9.0 1.15e-03    -  1.00e+00 1.00e+00h  1
  57  6.0863305e-03 0.00e+00 2.41e-06  -9.0 5.59e-04    -  1.00e+00 1.00e+00h  1
  58  6.0863364e-03 0.00e+00 1.67e-05  -9.0 9.61e-04    -  1.00e+00 1.00e+00H  1
  59  6.0863363e-03 0.00e+00 1.64e-05  -9.0 2.22e-03    -  1.00e+00 3.91e-03h  9
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  60  6.0863343e-03 0.00e+00 1.64e-05  -9.0 3.30e-03    -  9.88e-01 6.25e-02h  5
  61  6.0863287e-03 0.00e+00 3.07e-06  -9.0 2.07e-03    -  1.00e+00 5.00e-01h  2
  62  6.0863959e-03 0.00e+00 2.35e-05  -9.6 2.00e-03    -  1.00e+00 1.00e+00h  1
  63  6.0863141e-03 0.00e+00 3.01e-06  -9.7 1.48e-03    -  1.00e+00 1.00e+00f  1
  64  6.0863101e-03 0.00e+00 1.06e-05 -11.0 4.13e-04    -  1.00e+00 1.00e+00h  1
  65  6.0863098e-03 0.00e+00 3.86e-06 -11.0 1.18e-03    -  1.00e+00 5.00e-01h  2
  66  6.0863346e-03 0.00e+00 1.84e-05 -11.0 4.60e-03    -  1.00e+00 1.00e+00H  1
  67  6.0863148e-03 0.00e+00 1.01e-05 -11.0 4.43e-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
  68  6.0863136e-03 0.00e+00 6.56e-06 -11.0 2.87e-02    -  3.44e-01 6.25e-02f  5
Warning: Cutting back alpha due to evaluation error
  69  6.0863225e-03 0.00e+00 5.67e-05 -11.0 2.10e-03    -  1.00e+00 5.00e-01h  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  70  6.0863102e-03 0.00e+00 7.23e-06 -11.0 8.30e-04    -  1.00e+00 1.00e+00f  1
  71  6.0863161e-03 0.00e+00 1.51e-05 -11.0 3.41e-03    -  1.00e+00 1.00e+00H  1
  72  6.0863190e-03 0.00e+00 1.41e-05 -11.0 1.02e-02    -  1.00e+00 2.50e-01h  3
  73  6.0863187e-03 0.00e+00 1.05e-05 -11.0 1.46e-02    -  1.00e+00 8.34e-03h  7
  74  6.0863119e-03 0.00e+00 4.08e-06 -11.0 7.66e-03    -  1.00e+00 5.00e-01f  2
  75  6.0863108e-03 0.00e+00 2.69e-06 -11.0 1.11e-02    -  1.00e+00 6.25e-02f  5
  76  6.0863100e-03 0.00e+00 3.07e-06 -11.0 4.56e-03    -  1.00e+00 5.00e-01h  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  77  6.0863099e-03 0.00e+00 4.68e-06 -11.0 1.12e-02    -  1.00e+00 3.12e-02h  5
  78  6.0863099e-03 0.00e+00 3.30e-06 -11.0 3.22e-03    -  9.79e-01 1.25e-01h  4
  79  6.0863099e-03 0.00e+00 3.13e-06 -11.0 5.11e-04    -  1.00e+00 5.00e-01h  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  80  6.0863093e-03 0.00e+00 2.43e-06 -11.0 6.74e-04    -  1.00e+00 1.00e+00h  1
  81  6.0863108e-03 0.00e+00 1.19e-05 -11.0 3.55e-03    -  1.00e+00 5.80e-02h  5
  82  6.0863093e-03 0.00e+00 9.33e-07 -11.0 2.31e-04    -  1.00e+00 1.00e+00h  1
  83  6.0863093e-03 0.00e+00 3.14e-07 -11.0 7.69e-06    -  1.00e+00 1.00e+00h  1
  84  6.0863092e-03 0.00e+00 2.52e-07 -11.0 6.57e-06    -  1.00e+00 1.00e+00h  1
  85  6.0863095e-03 0.00e+00 2.21e-06 -11.0 9.21e-04    -  1.00e+00 5.00e-01h  2
  86  6.0863099e-03 0.00e+00 2.68e-06 -11.0 2.47e-04    -  1.00e+00 1.00e+00H  1
  87  6.0863093e-03 0.00e+00 7.05e-07 -11.0 4.11e-04    -  1.00e+00 1.00e+00H  1
  88  6.0863093e-03 0.00e+00 6.19e-07 -11.0 7.65e-04    -  1.00e+00 6.25e-02h  5
  89  6.0863093e-03 0.00e+00 1.25e-06 -11.0 6.05e-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.0863093e-03 0.00e+00 1.24e-06 -11.0 7.08e-04    -  1.00e+00 9.54e-07h 21
  91  6.0863093e-03 0.00e+00 1.17e-06 -11.0 7.69e-04    -  1.00e+00 1.49e-08h 27
  92  6.0863092e-03 0.00e+00 8.03e-07 -11.0 1.17e-03    -  1.00e+00 2.50e-01h  3
  93  6.0863092e-03 0.00e+00 7.25e-07 -11.0 7.64e-04    -  1.00e+00 6.25e-02h  5
  94  6.0863092e-03 0.00e+00 5.61e-07 -11.0 1.52e-04    -  1.00e+00 1.00e+00H  1
  95  6.0863092e-03 0.00e+00 1.05e-06 -11.0 1.51e-04    -  1.00e+00 2.50e-01h  3
  96  6.0863092e-03 0.00e+00 2.20e-08 -11.0 6.96e-05    -  1.00e+00 1.00e+00h  1
  97  6.0863092e-03 0.00e+00 9.93e-07 -11.0 1.67e-05    -  1.00e+00 1.00e+00h  1
  98  6.0863092e-03 0.00e+00 7.79e-08 -11.0 2.04e-05    -  1.00e+00 1.00e+00h  1
  99  6.0863092e-03 0.00e+00 2.09e-07 -11.0 2.95e-05    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 100  6.0863092e-03 0.00e+00 2.67e-08 -11.0 3.50e-05    -  1.00e+00 1.00e+00h  1
 101  6.0863092e-03 0.00e+00 1.18e-07 -11.0 2.35e-05    -  1.00e+00 1.00e+00h  1
 102  6.0863092e-03 0.00e+00 1.50e-07 -11.0 4.15e-05    -  1.00e+00 1.00e+00h  1
 103  6.0863092e-03 0.00e+00 1.30e-07 -11.0 1.67e-04    -  1.00e+00 2.50e-01h  3
 104  6.0863096e-03 0.00e+00 4.03e-06 -11.0 4.26e-04    -  1.00e+00 1.00e+00h  1
 105  6.0863096e-03 0.00e+00 4.02e-06 -11.0 4.10e-04    -  1.00e+00 1.53e-05h 17
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 106  6.0863096e-03 0.00e+00 4.37e-06 -11.0 4.23e-03    -  1.00e+00 9.77e-04h 11
 107  6.0863096e-03 0.00e+00 4.11e-06 -11.0 4.60e-04    -  1.00e+00 3.81e-06h 19
 108  6.0863093e-03 0.00e+00 8.36e-07 -11.0 5.00e-04    -  1.00e+00 1.00e+00H  1
 109  6.0863093e-03 0.00e+00 6.82e-07 -11.0 3.18e-04    -  1.00e+00 2.50e-01h  3
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 110  6.0863092e-03 0.00e+00 4.50e-08 -11.0 1.22e-04    -  1.00e+00 1.00e+00h  1
 111  6.0863092e-03 0.00e+00 4.29e-08 -11.0 2.38e-05    -  1.00e+00 2.50e-01h  3
 112  6.0863092e-03 0.00e+00 7.94e-08 -11.0 4.90e-06    -  1.00e+00 1.00e+00h  1
 113  6.0863092e-03 0.00e+00 2.41e-08 -11.0 1.51e-05    -  1.00e+00 6.25e-02h  5
 114  6.0863092e-03 0.00e+00 8.17e-09 -11.0 1.53e-06    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 114

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


Number of objective function evaluations             = 376
Number of objective gradient evaluations             = 115
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 376
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 115
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.291

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.1437699e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  6.1454853e-03 0.00e+00 4.25e-03  -6.3 7.91e-03    -  9.72e-01 1.00e+00h  1
   2  6.1444539e-03 0.00e+00 5.58e-05  -7.9 8.45e-04    -  9.87e-01 1.00e+00f  1
   3  6.1625989e-03 0.00e+00 1.92e-06  -5.4 1.32e-02    -  1.00e+00 1.00e+00f  1
   4  6.2104947e-03 0.00e+00 1.15e-03  -5.5 8.76e-01    -  4.20e-01 6.91e-01f  1
   5  6.1755449e-03 0.00e+00 5.66e-05  -5.5 1.73e-01    -  3.17e-02 1.00e+00f  1
   6  6.1694232e-03 0.00e+00 2.71e-05  -5.5 6.64e-02    -  1.00e+00 1.00e+00f  1
   7  6.1016420e-03 0.00e+00 1.46e-05  -8.3 7.28e-02    -  6.94e-01 9.48e-01f  1
   8  6.1030181e-03 0.00e+00 2.86e-05  -6.5 1.34e-01    -  9.77e-01 1.00e+00f  1
   9  6.1007068e-03 0.00e+00 3.70e-05  -6.5 1.07e-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.0970722e-03 0.00e+00 1.70e-04  -7.2 6.61e-02    -  9.99e-01 1.00e+00f  1
  11  6.0988121e-03 0.00e+00 4.90e-05  -6.7 6.57e-02    -  1.00e+00 1.00e+00f  1
  12  6.0968249e-03 0.00e+00 2.35e-05  -6.8 5.10e-02    -  6.31e-01 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
  13  6.0942707e-03 0.00e+00 2.32e-05  -7.6 7.56e-02    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
  14  6.0936857e-03 0.00e+00 3.17e-05  -6.8 3.86e-01    -  1.00e+00 1.21e-01f  3
  15  6.0917955e-03 0.00e+00 2.06e-05  -7.2 1.07e-01    -  1.00e+00 4.57e-01f  2
Warning: Cutting back alpha due to evaluation error
  16  6.0906237e-03 0.00e+00 2.34e-05  -7.8 2.06e-01    -  1.00e+00 2.57e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  17  6.0901015e-03 0.00e+00 1.18e-05  -8.5 2.13e-01    -  1.00e+00 1.10e-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
  18  6.0900256e-03 0.00e+00 9.62e-06  -9.3 7.31e-02    -  1.00e+00 3.10e-02f  6
  19  6.0899165e-03 0.00e+00 3.38e-05  -7.2 6.18e-02    -  1.00e+00 1.17e-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
  20  6.0889473e-03 0.00e+00 3.10e-05  -8.1 8.97e-02    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  21  6.0892349e-03 0.00e+00 3.40e-05  -7.1 9.70e-02    -  6.82e-01 1.64e-01f  3
  22  6.0891647e-03 0.00e+00 2.29e-05  -7.4 8.91e-03    -  1.00e+00 5.00e-01f  2
  23  6.0891206e-03 0.00e+00 1.36e-05  -7.4 5.60e-03    -  1.00e+00 1.00e+00f  1
  24  6.0891090e-03 0.00e+00 1.12e-05  -7.4 3.75e-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
  25  6.0890964e-03 0.00e+00 4.88e-06  -7.4 3.73e-03    -  1.00e+00 1.25e-01h  4
  26  6.0890704e-03 0.00e+00 3.41e-06  -7.4 4.82e-03    -  1.00e+00 5.00e-01h  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  27  6.0890626e-03 0.00e+00 1.17e-04  -7.4 2.68e-03    -  1.00e+00 2.50e-01h  3
  28  6.0890606e-03 0.00e+00 2.42e-05  -7.4 3.39e-03    -  1.00e+00 6.25e-02h  5
  29  6.0890654e-03 0.00e+00 1.49e-05  -7.4 1.29e-03    -  1.00e+00 5.00e-01h  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30  6.0890625e-03 0.00e+00 1.44e-05  -7.4 4.74e-04    -  1.00e+00 1.00e+00h  1
  31  6.0890645e-03 0.00e+00 1.01e-05  -7.4 6.39e-04    -  1.00e+00 1.00e+00h  1
  32  6.0890628e-03 0.00e+00 8.23e-06  -7.4 2.23e-04    -  1.00e+00 1.00e+00h  1
  33  6.0890627e-03 0.00e+00 6.25e-06  -7.4 1.36e-04    -  1.00e+00 1.00e+00h  1
  34  6.0890637e-03 0.00e+00 5.56e-06  -7.4 1.12e-04    -  1.00e+00 1.00e+00h  1
  35  6.0890635e-03 0.00e+00 1.84e-06  -7.4 1.58e-03    -  1.00e+00 6.25e-02h  5
  36  6.0890639e-03 0.00e+00 2.08e-07  -7.4 9.78e-05    -  1.00e+00 5.00e-01h  2
Warning: Cutting back alpha due to evaluation error
  37  6.0886253e-03 0.00e+00 5.43e-06  -9.0 7.54e-03    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  38  6.0885487e-03 0.00e+00 6.88e-05  -8.8 1.45e-01    -  1.00e+00 6.68e-02f  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
  39  6.0885408e-03 0.00e+00 2.13e-04  -8.4 5.57e-02    -  1.00e+00 9.50e-03f  7
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.0884214e-03 0.00e+00 2.72e-05  -8.9 8.68e-02    -  1.00e+00 2.30e-01f  2
Warning: Cutting back alpha due to evaluation error
  41  6.0883426e-03 0.00e+00 2.41e-05  -7.8 1.42e-02    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
  42  6.0886270e-03 0.00e+00 1.25e-04  -7.5 2.78e-02    -  1.00e+00 5.00e-01f  2
  43  6.0886659e-03 0.00e+00 5.76e-05  -7.7 1.97e-02    -  5.05e-01 1.00e+00f  1
  44  6.0885979e-03 0.00e+00 2.16e-05  -7.7 2.19e-02    -  3.02e-01 1.60e-01f  3
  45  6.0884740e-03 0.00e+00 1.23e-05  -7.7 8.93e-03    -  1.00e+00 1.00e+00f  1
  46  6.0884736e-03 0.00e+00 2.84e-05  -7.7 5.95e-03    -  1.00e+00 6.25e-02f  5
Warning: Cutting back alpha due to evaluation error
  47  6.0884535e-03 0.00e+00 5.92e-06  -7.7 3.46e-03    -  1.00e+00 5.00e-01h  2
  48  6.0884469e-03 0.00e+00 1.88e-05  -7.7 1.31e-02    -  1.00e+00 6.25e-02f  5
Warning: Cutting back alpha due to evaluation error
  49  6.0884371e-03 0.00e+00 2.38e-06  -7.7 2.26e-03    -  1.00e+00 5.00e-01h  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
  50  6.0884272e-03 0.00e+00 2.88e-05  -7.7 3.39e-03    -  1.00e+00 5.00e-01h  2
  51  6.0884258e-03 0.00e+00 1.62e-05  -7.7 1.94e-03    -  1.00e+00 1.00e+00h  1
  52  6.0884247e-03 0.00e+00 1.55e-05  -7.7 2.68e-03    -  1.00e+00 5.00e-01f  2
  53  6.0884278e-03 0.00e+00 5.63e-06  -7.7 1.12e-03    -  1.00e+00 1.00e+00h  1
  54  6.0884152e-03 0.00e+00 5.68e-06  -7.7 3.05e-03    -  1.00e+00 5.00e-01h  2
  55  6.0884570e-03 0.00e+00 2.62e-05  -7.7 2.06e-03    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  56  6.0884570e-03 0.00e+00 2.59e-05  -7.7 3.39e-03    -  1.00e+00 2.38e-07h 23
  57  6.0884570e-03 0.00e+00 2.55e-05  -7.7 7.70e-03    -  1.00e+00 9.77e-04f 11
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
  58  6.0884569e-03 0.00e+00 2.71e-05  -7.7 1.87e-02    -  1.00e+00 3.90e-04f 12
Warning: Cutting back alpha due to evaluation error
  59  6.0884568e-03 0.00e+00 2.50e-05  -7.7 3.50e-03    -  1.00e+00 9.77e-04h 11
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.0884567e-03 0.00e+00 2.62e-05  -7.7 3.76e-03    -  1.00e+00 4.88e-04h 12
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  61  6.0884366e-03 0.00e+00 1.88e-05  -7.7 3.68e-03    -  1.00e+00 2.50e-01f  3
  62  6.0884227e-03 0.00e+00 2.48e-05  -7.7 5.85e-03    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  63  6.0884074e-03 0.00e+00 9.76e-06  -7.7 3.86e-03    -  1.00e+00 2.50e-01f  3
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  64  6.0884048e-03 0.00e+00 4.45e-06  -7.7 8.57e-04    -  1.00e+00 2.50e-01h  3
  65  6.0884229e-03 0.00e+00 2.35e-05  -7.7 2.25e-03    -  1.00e+00 5.00e-01h  2
  66  6.0884074e-03 0.00e+00 1.32e-05  -7.7 7.61e-04    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  67  6.0884060e-03 0.00e+00 1.75e-05  -7.7 3.26e-04    -  1.00e+00 5.00e-01h  2
  68  6.0884066e-03 0.00e+00 7.84e-06  -7.7 1.13e-04    -  1.00e+00 1.00e+00h  1
  69  6.0884064e-03 0.00e+00 4.06e-06  -7.7 4.39e-05    -  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.0884066e-03 0.00e+00 6.85e-06  -7.7 1.37e-04    -  1.00e+00 1.00e+00h  1
  71  6.0884067e-03 0.00e+00 2.90e-06  -7.7 2.22e-04    -  1.00e+00 1.00e+00h  1
  72  6.0884071e-03 0.00e+00 5.76e-06  -7.7 1.51e-04    -  1.00e+00 1.00e+00h  1
  73  6.0884072e-03 0.00e+00 5.36e-07  -7.7 1.55e-04    -  1.00e+00 1.00e+00h  1
  74  6.0884077e-03 0.00e+00 1.24e-05  -7.7 2.60e-04    -  1.00e+00 1.00e+00h  1
  75  6.0884077e-03 0.00e+00 1.16e-05  -7.7 4.32e-04    -  1.00e+00 6.25e-02h  5
  76  6.0884076e-03 0.00e+00 1.09e-05  -7.7 8.97e-04    -  1.00e+00 1.56e-02h  7
  77  6.0884078e-03 0.00e+00 1.03e-06  -7.7 4.18e-04    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  78  6.0884078e-03 0.00e+00 3.38e-06  -7.7 1.80e-03    -  1.00e+00 6.25e-02h  5
  79  6.0884090e-03 0.00e+00 3.70e-06  -7.7 7.89e-04    -  1.00e+00 5.00e-01h  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  80  6.0884090e-03 0.00e+00 4.68e-06  -7.7 4.48e-04    -  1.00e+00 3.12e-02h  6
  81  6.0884092e-03 0.00e+00 7.61e-06  -7.7 6.22e-04    -  1.00e+00 1.00e+00H  1
  82  6.0884090e-03 0.00e+00 2.21e-06  -7.7 3.85e-04    -  1.00e+00 5.00e-01h  2
  83  6.0884082e-03 0.00e+00 3.44e-06  -7.7 6.35e-04    -  1.00e+00 1.00e+00h  1
  84  6.0884086e-03 0.00e+00 2.38e-06  -7.7 2.11e-04    -  1.00e+00 5.00e-01h  2
  85  6.0884091e-03 0.00e+00 2.07e-06  -7.7 8.98e-04    -  1.00e+00 2.50e-01h  3
  86  6.0884083e-03 0.00e+00 3.76e-06  -7.7 6.09e-04    -  1.00e+00 5.00e-01h  2
  87  6.0884086e-03 0.00e+00 8.77e-07  -7.7 1.07e-03    -  1.00e+00 1.25e-01h  4
  88  6.0884086e-03 0.00e+00 2.90e-07  -7.7 8.08e-05    -  1.00e+00 1.00e+00h  1
  89  6.0884086e-03 0.00e+00 2.46e-06  -7.7 5.27e-05    -  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.0884086e-03 0.00e+00 4.81e-07  -7.7 2.68e-04    -  1.00e+00 5.00e-01h  2
  91  6.0884089e-03 0.00e+00 2.63e-06  -7.7 3.36e-04    -  1.00e+00 2.50e-01h  3
  92  6.0884089e-03 0.00e+00 2.27e-06  -7.7 2.56e-04    -  1.00e+00 1.56e-02h  7
  93  6.0884088e-03 0.00e+00 2.82e-06  -7.7 2.11e-04    -  1.00e+00 1.25e-01h  4
  94  6.0884089e-03 0.00e+00 4.99e-07  -7.7 1.00e-03    -  1.00e+00 6.25e-02h  5
  95  6.0884089e-03 0.00e+00 2.28e-07  -7.7 6.49e-05    -  1.00e+00 5.00e-01h  2
  96  6.0884090e-03 0.00e+00 2.66e-07  -7.7 7.23e-05    -  1.00e+00 2.50e-01h  3
  97  6.0884091e-03 0.00e+00 8.03e-07  -7.7 6.49e-05    -  1.00e+00 2.50e-01h  3
  98  6.0884092e-03 0.00e+00 6.58e-07  -7.7 4.70e-04    -  1.00e+00 1.25e-01h  4
  99  6.0884095e-03 0.00e+00 2.91e-07  -7.7 5.60e-04    -  1.00e+00 1.25e-01h  4
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 100  6.0884108e-03 0.00e+00 2.21e-06  -7.7 3.14e-04    -  1.00e+00 1.00e+00w  1
 101  6.0884106e-03 0.00e+00 2.95e-05  -7.7 3.24e-04    -  1.00e+00 1.00e+00w  1
 102  6.0884119e-03 0.00e+00 8.03e-06  -7.7 5.99e-04    -  1.00e+00 1.00e+00w  1
 103  6.0884098e-03 0.00e+00 7.33e-07  -7.7 1.46e-03    -  1.00e+00 2.50e-01h  2
 104  6.0884097e-03 0.00e+00 9.35e-07  -7.7 5.40e-05    -  1.00e+00 1.00e+00h  1
 105  6.0884097e-03 0.00e+00 1.82e-07  -7.7 2.23e-04    -  1.00e+00 6.25e-02h  5
 106  6.0880151e-03 0.00e+00 1.43e-05  -9.0 8.03e-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
 107  6.0880063e-03 0.00e+00 1.68e-05  -9.6 1.96e-01    -  1.00e+00 1.24e-02f  5
 108  6.0880039e-03 0.00e+00 3.27e-05  -8.9 1.04e-01    -  1.00e+00 4.83e-02f  3
Warning: Cutting back alpha due to evaluation error
 109  6.0881276e-03 0.00e+00 1.93e-05  -7.9 1.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
 110  6.0881144e-03 0.00e+00 5.61e-05  -8.1 1.30e-02    -  1.00e+00 5.00e-01f  2
 111  6.0881126e-03 0.00e+00 1.58e-05  -8.1 2.93e-02    -  1.00e+00 2.50e-01f  3
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 112  6.0881116e-03 0.00e+00 8.25e-06  -8.1 3.03e-03    -  1.00e+00 2.50e-01h  3
 113  6.0880977e-03 0.00e+00 2.45e-05  -8.1 2.76e-02    -  1.00e+00 2.50e-01f  3
 114  6.0880926e-03 0.00e+00 2.25e-05  -8.1 7.16e-03    -  1.00e+00 1.25e-01f  4
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.0880854e-03 0.00e+00 6.62e-06  -8.1 1.30e-02    -  1.00e+00 1.25e-01f  4
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
 116  6.0880848e-03 0.00e+00 4.20e-05  -8.1 2.75e-02    -  1.00e+00 6.25e-02f  5
Warning: Cutting back alpha due to evaluation error
 117  6.0880809e-03 0.00e+00 6.70e-06  -8.1 1.38e-02    -  1.00e+00 3.94e-02f  5
 118  6.0880824e-03 0.00e+00 1.48e-05  -8.1 2.72e-02    -  1.00e+00 1.25e-01h  4
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 119  6.0880764e-03 0.00e+00 9.48e-06  -8.1 2.14e-02    -  1.00e+00 1.02e-01h  4
Warning: Cutting back alpha due to evaluation error
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 120  6.0880709e-03 0.00e+00 1.53e-05  -8.1 3.13e-02    -  1.00e+00 5.39e-02f  4
 121  6.0880611e-03 0.00e+00 1.35e-05  -8.1 8.89e-03    -  1.00e+00 2.50e-01f  3
Warning: Cutting back alpha due to evaluation error
 122  6.0880526e-03 0.00e+00 6.46e-06  -8.1 7.41e-03    -  1.00e+00 2.50e-01h  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
 123  6.0880511e-03 0.00e+00 1.92e-04  -8.1 6.95e-03    -  1.00e+00 1.25e-01h  4
 124  6.0880497e-03 0.00e+00 6.08e-05  -8.1 1.05e-02    -  1.00e+00 6.25e-02h  5
 125  6.0880510e-03 0.00e+00 2.52e-05  -8.1 6.03e-03    -  1.00e+00 1.25e-01f  4
 126  6.0880384e-03 0.00e+00 2.67e-05  -8.1 3.10e-03    -  1.00e+00 1.00e+00h  1
 127  6.0880381e-03 0.00e+00 2.44e-05  -8.1 1.17e-03    -  1.00e+00 6.25e-02h  5
 128  6.0880430e-03 0.00e+00 1.73e-05  -8.1 1.16e-03    -  1.00e+00 1.00e+00h  1
 129  6.0880499e-03 0.00e+00 9.39e-06  -8.1 5.98e-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.0880407e-03 0.00e+00 4.46e-06  -8.1 4.12e-03    -  1.00e+00 1.00e+00F  1
 131  6.0880420e-03 0.00e+00 1.20e-05  -8.1 2.58e-03    -  1.00e+00 2.50e-01h  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
 132  6.0880420e-03 0.00e+00 1.10e-05  -8.1 8.08e-03    -  1.00e+00 1.53e-05h 17
 133  6.0880417e-03 0.00e+00 1.29e-05  -8.1 5.06e-02    -  1.00e+00 3.91e-03h  9
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 134  6.0880416e-03 0.00e+00 1.13e-05  -8.1 1.46e-02    -  1.00e+00 7.81e-03h  8
 135  6.0880416e-03 0.00e+00 1.21e-05  -8.1 4.31e-03    -  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
Warning: Cutting back alpha due to evaluation error
 136  6.0880409e-03 0.00e+00 6.69e-06  -8.1 2.80e-02    -  1.00e+00 6.25e-02f  5
Buckling-constrained result:
  obj = 0.006087973737295718
  vol = -8.77306768343189e-8

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.7999557695227362
Buckling-constrained min eigenvalue: 8.177758090264977e-9
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.