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.34125289443461526

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.3268361058670982e+02   -2.3268361058670982e+02
Dual infeasibility......:   9.0869483248525691e-10    9.0869483248525691e-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.0869483248525691e-10    9.0869483248525691e-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.461

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.3259812936628066e+01   -2.3259812936628066e+01
Dual infeasibility......:   1.0679475584241832e-09    1.0679475584241832e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000000003599e-11    1.0000000000003599e-11
Overall NLP error.......:   1.0679475584241832e-09    1.0679475584241832e-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.015

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.3175099519889870e+00   -2.3175099519889870e+00
Dual infeasibility......:   1.2330597392128307e-09    1.2330597392128307e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000000000000019e-11    1.0000000000000019e-11
Overall NLP error.......:   1.2330597392128307e-09    1.2330597392128307e-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.015

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.2382205830250976e-01   -2.2382205830250976e-01
Dual infeasibility......:   4.7684536343569227e-09    4.7684536343569227e-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.7684536343569227e-09    4.7684536343569227e-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.017

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.5954029329887525e-02   -1.5954029329887525e-02
Dual infeasibility......:   8.0383938361402608e-09    8.0383938361402608e-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.0383938361402608e-09    8.0383938361402608e-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.022

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.9318503221212461e-03    3.9318503221212461e-03
Dual infeasibility......:   5.2873032940030749e-09    5.2873032940030749e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.0000171411304683e-11    1.0000171411304683e-11
Overall NLP error.......:   5.2873032940030749e-09    5.2873032940030749e-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.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  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-01f  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.8835308e-03 0.00e+00 1.04e-06  -7.4 1.52e-03    -  1.00e+00 5.00e-01h  2
  22  5.8835305e-03 0.00e+00 5.49e-08  -7.4 4.42e-04    -  1.00e+00 1.00e+00h  1
  23  5.8827356e-03 0.00e+00 8.27e-07  -9.0 6.09e-03    -  1.00e+00 1.00e+00f  1
  24  5.8827331e-03 0.00e+00 3.04e-06  -9.9 9.74e-03    -  1.00e+00 5.00e-01f  2
  25  5.8827233e-03 0.00e+00 2.27e-06 -10.8 2.42e-03    -  1.00e+00 1.00e+00f  1
  26  5.8827155e-03 0.00e+00 1.66e-07 -11.0 2.54e-03    -  1.00e+00 1.00e+00h  1
  27  5.8827154e-03 0.00e+00 7.80e-08 -11.0 3.61e-04    -  1.00e+00 1.00e+00h  1
  28  5.8827154e-03 0.00e+00 9.99e-08 -11.0 4.09e-04    -  1.00e+00 1.00e+00h  1
  29  5.8827154e-03 0.00e+00 1.30e-07 -11.0 3.03e-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.69e-07 -11.0 2.28e-04    -  1.00e+00 1.00e+00h  1
  31  5.8827154e-03 0.00e+00 1.35e-07 -11.0 2.02e-04    -  1.00e+00 1.00e+00h  1
  32  5.8827154e-03 0.00e+00 1.12e-07 -11.0 1.38e-04    -  1.00e+00 1.00e+00h  1
  33  5.8827154e-03 0.00e+00 4.06e-08 -11.0 8.40e-05    -  1.00e+00 1.00e+00h  1
  34  5.8827154e-03 0.00e+00 2.92e-08 -11.0 5.14e-05    -  1.00e+00 1.00e+00h  1
  35  5.8827154e-03 0.00e+00 4.06e-09 -11.0 2.68e-05    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 35

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


Number of objective function evaluations             = 44
Number of objective gradient evaluations             = 36
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 44
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 36
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.1339931e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  6.1354984e-03 0.00e+00 2.73e-03  -6.3 5.02e-03    -  9.79e-01 1.00e+00h  1
   2  6.1342223e-03 0.00e+00 2.91e-05  -8.0 4.10e-04    -  9.89e-01 1.00e+00f  1
   3  6.1149773e-03 0.00e+00 1.31e-06  -5.8 7.68e-03    -  1.00e+00 1.00e+00f  1
   4  6.0751692e-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.0729705e-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.0710991e-03 0.00e+00 2.50e-05  -8.0 6.94e-01    -  1.00e+00 1.75e-01f  2
   7  6.0707731e-03 0.00e+00 1.89e-05  -7.5 2.74e-01    -  1.00e+00 1.02e-01f  2
Warning: Cutting back alpha due to evaluation error
   8  6.0701686e-03 0.00e+00 5.87e-05  -7.7 4.71e-02    -  1.00e+00 4.59e-01f  2
   9  6.0704172e-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.0706567e-03 0.00e+00 5.97e-06  -7.2 2.33e-02    -  1.00e+00 1.00e+00f  1
  11  6.0706482e-03 0.00e+00 6.80e-06  -7.2 8.19e-03    -  1.00e+00 2.50e-01f  3
  12  6.0706085e-03 0.00e+00 5.21e-06  -7.2 1.51e-03    -  1.00e+00 1.00e+00h  1
  13  6.0705974e-03 0.00e+00 2.83e-06  -7.2 8.02e-04    -  1.00e+00 1.00e+00h  1
  14  6.0705839e-03 0.00e+00 1.18e-06  -7.2 1.22e-03    -  1.00e+00 1.00e+00h  1
  15  6.0705888e-03 0.00e+00 4.22e-07  -7.2 6.14e-04    -  1.00e+00 1.00e+00h  1
  16  6.0692750e-03 0.00e+00 1.09e-05  -9.0 4.26e-02    -  9.48e-01 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  17  6.0696489e-03 0.00e+00 5.44e-05  -7.8 8.47e-02    -  1.00e+00 2.65e-01f  2
  18  6.0694796e-03 0.00e+00 1.05e-05  -7.9 2.69e-02    -  9.44e-01 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  19  6.0694740e-03 0.00e+00 2.83e-06  -7.9 2.56e-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.0694737e-03 0.00e+00 4.21e-06  -7.9 5.33e-03    -  1.00e+00 2.50e-01f  3
  21  6.0694670e-03 0.00e+00 3.28e-06  -7.9 4.68e-03    -  1.00e+00 1.00e+00h  1
  22  6.0694648e-03 0.00e+00 2.18e-06  -7.9 1.19e-02    -  1.00e+00 6.25e-02f  5
  23  6.0694662e-03 0.00e+00 1.40e-06  -7.9 1.42e-03    -  1.00e+00 1.00e+00h  1
  24  6.0694705e-03 0.00e+00 2.14e-06  -7.9 3.24e-03    -  1.00e+00 1.00e+00H  1
  25  6.0694690e-03 0.00e+00 3.60e-06  -7.9 2.07e-03    -  1.00e+00 1.00e+00h  1
  26  6.0694631e-03 0.00e+00 2.41e-06  -7.9 3.52e-03    -  1.00e+00 1.00e+00H  1
  27  6.0694637e-03 0.00e+00 1.64e-06  -7.9 3.27e-03    -  1.00e+00 2.50e-01h  3
  28  6.0694650e-03 0.00e+00 2.80e-06  -7.9 3.15e-03    -  1.00e+00 5.00e-01h  2
  29  6.0695106e-03 0.00e+00 9.82e-06  -7.9 1.31e-02    -  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.0695106e-03 0.00e+00 9.21e-06  -7.9 1.22e-02    -  1.00e+00 3.05e-05h 16
  31  6.0695094e-03 0.00e+00 8.06e-06  -7.9 7.32e-02    -  1.00e+00 3.91e-03f  9
Warning: Cutting back alpha due to evaluation error
  32  6.0695094e-03 0.00e+00 6.88e-06  -7.9 1.75e-02    -  1.00e+00 1.82e-12h 40
  33  6.0695094e-03 0.00e+00 9.03e-06  -7.9 1.69e-02    -  1.00e+00 6.10e-05h 15
  34  6.0695094e-03 0.00e+00 7.57e-06  -7.9 3.73e-02    -  1.00e+00 3.81e-06h 19
  35  6.0695094e-03 0.00e+00 7.20e-06  -7.9 4.28e-02    -  1.00e+00 1.86e-09h 30
  36  6.0695092e-03 0.00e+00 7.58e-06  -7.9 3.45e-02    -  1.00e+00 9.77e-04f 11
  37  6.0695092e-03 0.00e+00 7.43e-06  -7.9 8.84e-03    -  1.00e+00 3.64e-12h 39
  38  6.0695092e-03 0.00e+00 8.33e-06  -7.9 1.28e-02    -  1.00e+00 1.91e-06h 20
  39  6.0695066e-03 0.00e+00 1.05e-05  -7.9 4.79e-02    -  1.00e+00 1.56e-02f  7
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  40  6.0695983e-03 0.00e+00 2.89e-05  -7.9 2.57e-02    -  1.00e+00 1.00e+00w  1
  41  6.0697438e-03 0.00e+00 5.01e-05  -7.9 1.10e-02    -  1.00e+00 1.00e+00w  1
  42  6.0695211e-03 0.00e+00 1.60e-05  -7.9 1.72e-02    -  1.00e+00 1.00e+00w  1
Warning: Cutting back alpha due to evaluation error
  43  6.0695066e-03 0.00e+00 9.33e-06  -7.9 1.18e-02    -  1.00e+00 9.31e-10h 30
  44  6.0695010e-03 0.00e+00 8.79e-06  -7.9 9.40e-03    -  1.00e+00 1.25e-01f  4
Warning: Cutting back alpha due to evaluation error
  45  6.0694937e-03 0.00e+00 6.36e-06  -7.9 1.78e-02    -  1.00e+00 1.14e-01f  4
  46  6.0694663e-03 0.00e+00 9.46e-06  -7.9 1.03e-02    -  1.00e+00 1.00e+00f  1
  47  6.0694663e-03 0.00e+00 5.73e-06  -7.9 4.22e-03    -  1.00e+00 4.88e-04h 12
  48  6.0694672e-03 0.00e+00 8.97e-07  -7.9 2.93e-03    -  1.00e+00 1.00e+00f  1
  49  6.0694660e-03 0.00e+00 1.55e-06  -7.9 3.73e-03    -  1.00e+00 2.50e-01h  3
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  50  6.0694657e-03 0.00e+00 6.33e-07  -7.9 1.03e-03    -  1.00e+00 1.25e-01h  4
  51  6.0694658e-03 0.00e+00 2.21e-07  -7.9 8.75e-05    -  1.00e+00 1.00e+00h  1
  52  6.0694657e-03 0.00e+00 4.26e-07  -7.9 1.01e-04    -  1.00e+00 1.00e+00h  1
  53  6.0694658e-03 0.00e+00 6.79e-08  -7.9 4.74e-05    -  1.00e+00 1.00e+00h  1
  54  6.0692450e-03 0.00e+00 1.74e-06  -9.0 7.86e-03    -  1.00e+00 1.00e+00f  1
  55  6.0692529e-03 0.00e+00 6.86e-06  -8.7 2.00e-02    -  1.00e+00 1.25e-01h  4
  56  6.0692553e-03 0.00e+00 3.75e-06  -8.9 1.09e-03    -  1.00e+00 1.00e+00f  1
  57  6.0692539e-03 0.00e+00 8.39e-07  -8.9 8.12e-04    -  1.00e+00 5.00e-01h  2
  58  6.0692539e-03 0.00e+00 9.88e-07  -8.9 2.09e-04    -  1.00e+00 1.00e+00h  1
  59  6.0692537e-03 0.00e+00 2.92e-07  -8.9 2.28e-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.0692538e-03 0.00e+00 6.52e-07  -8.9 1.19e-04    -  1.00e+00 1.00e+00h  1
  61  6.0692538e-03 0.00e+00 2.36e-07  -8.9 5.95e-05    -  1.00e+00 1.00e+00h  1
  62  6.0692537e-03 0.00e+00 3.09e-08  -8.9 6.15e-05    -  1.00e+00 1.00e+00h  1
  63  6.0692537e-03 0.00e+00 9.94e-08  -8.9 4.48e-05    -  1.00e+00 1.00e+00h  1
  64  6.0692537e-03 0.00e+00 6.18e-08  -8.9 1.68e-04    -  1.00e+00 2.50e-01h  3
  65  6.0692537e-03 0.00e+00 7.77e-08  -8.9 8.14e-05    -  1.00e+00 1.00e+00h  1
  66  6.0692537e-03 0.00e+00 7.51e-08  -8.9 4.84e-04    -  1.00e+00 2.50e-01h  3
  67  6.0692537e-03 0.00e+00 6.92e-08  -8.9 2.22e-04    -  1.00e+00 3.12e-02h  6
  68  6.0692537e-03 0.00e+00 3.48e-07  -8.9 3.44e-05    -  1.00e+00 1.00e+00H  1
  69  6.0692537e-03 0.00e+00 3.36e-08  -8.9 1.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
  70  6.0692537e-03 0.00e+00 1.48e-07  -8.9 8.42e-05    -  1.00e+00 1.00e+00h  1
  71  6.0692537e-03 0.00e+00 4.33e-08  -8.9 3.84e-05    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 71

                                   (scaled)                 (unscaled)
Objective...............:   6.0692537024234139e-03    6.0692537024234139e-03
Dual infeasibility......:   4.3308337127702814e-08    4.3308337127702814e-08
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.3683987057298128e-09    1.3683987057298128e-09
Overall NLP error.......:   4.3308337127702814e-08    4.3308337127702814e-08


Number of objective function evaluations             = 387
Number of objective gradient evaluations             = 72
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 387
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 72
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.162

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.1472762e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  6.1485623e-03 0.00e+00 2.96e-03  -6.3 5.48e-03    -  9.78e-01 1.00e+00h  1
   2  6.1473412e-03 0.00e+00 3.52e-05  -8.0 6.85e-04    -  9.88e-01 1.00e+00f  1
   3  6.1491245e-03 0.00e+00 6.71e-06  -5.6 1.87e-02    -  9.97e-01 1.00e+00f  1
   4  6.1561312e-03 0.00e+00 6.00e-05  -5.6 4.84e-01    -  9.16e-01 1.00e+00f  1
   5  6.1552337e-03 0.00e+00 1.12e-05  -5.6 1.13e-01    -  1.00e+00 2.50e-01f  3
   6  6.0970001e-03 0.00e+00 7.87e-06  -8.4 1.31e-01    -  5.56e-01 9.64e-01f  1
   7  6.0971273e-03 0.00e+00 6.29e-05  -6.5 1.80e-01    -  9.94e-01 1.00e+00f  1
   8  6.0947801e-03 0.00e+00 2.07e-05  -6.6 1.22e-01    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
   9  6.0912554e-03 0.00e+00 3.11e-05  -7.5 9.41e-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.0888437e-03 0.00e+00 9.76e-06  -8.8 1.76e-01    -  1.00e+00 4.05e-01f  2
  11  6.0885815e-03 0.00e+00 4.35e-05  -8.1 1.08e-01    -  1.00e+00 2.27e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  12  6.0878924e-03 0.00e+00 5.02e-05  -9.0 6.66e-02    -  1.00e+00 2.36e-01f  3
  13  6.0921387e-03 0.00e+00 3.18e-05  -6.9 1.49e-01    -  1.00e+00 1.00e+00f  1
  14  6.0920201e-03 0.00e+00 4.46e-05  -6.9 6.10e-02    -  1.00e+00 3.84e-01f  2
  15  6.0906796e-03 0.00e+00 1.49e-05  -6.9 4.26e-02    -  1.00e+00 1.00e+00f  1
  16  6.0905677e-03 0.00e+00 2.40e-05  -6.9 2.12e-02    -  1.00e+00 2.50e-01f  3
  17  6.0904753e-03 0.00e+00 4.98e-06  -6.9 6.61e-03    -  1.00e+00 1.00e+00f  1
  18  6.0903125e-03 0.00e+00 6.51e-06  -6.9 2.40e-02    -  1.00e+00 5.00e-01f  2
  19  6.0903029e-03 0.00e+00 5.50e-06  -6.9 1.85e-02    -  1.00e+00 2.50e-01f  3
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20  6.0903117e-03 0.00e+00 1.87e-06  -6.9 2.40e-03    -  1.00e+00 1.00e+00h  1
  21  6.0902952e-03 0.00e+00 9.47e-07  -6.9 2.86e-03    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
  22  6.0882441e-03 0.00e+00 8.83e-06  -9.0 1.06e-01    -  8.55e-01 4.99e-01f  2
Warning: Cutting back alpha due to evaluation error
  23  6.0878729e-03 0.00e+00 4.39e-05  -9.0 1.43e-01    -  9.90e-01 1.86e-01f  2
  24  6.0866599e-03 0.00e+00 2.26e-05  -8.1 3.54e-02    -  1.00e+00 1.00e+00f  1
  25  6.0866400e-03 0.00e+00 1.95e-05  -7.7 2.45e-02    -  1.00e+00 1.22e-01f  3
Warning: Cutting back alpha due to evaluation error
  26  6.0864709e-03 0.00e+00 1.52e-05  -9.3 1.74e-02    -  1.00e+00 5.00e-01f  2
  27  6.0864659e-03 0.00e+00 2.66e-05  -7.9 3.98e-02    -  1.00e+00 8.24e-02f  3
Warning: Cutting back alpha due to evaluation error
  28  6.0865476e-03 0.00e+00 1.53e-05  -7.9 1.15e-02    -  9.93e-01 5.00e-01f  2
  29  6.0865332e-03 0.00e+00 1.08e-05  -8.1 2.01e-03    -  1.00e+00 5.00e-01f  2
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30  6.0865091e-03 0.00e+00 3.76e-06  -8.1 2.19e-03    -  1.00e+00 1.00e+00f  1
  31  6.0865056e-03 0.00e+00 1.56e-05  -8.1 1.12e-03    -  1.00e+00 1.00e+00H  1
  32  6.0865045e-03 0.00e+00 4.29e-06  -8.1 4.83e-04    -  1.00e+00 1.00e+00h  1
  33  6.0865068e-03 0.00e+00 3.87e-06  -8.1 9.35e-04    -  1.00e+00 1.00e+00h  1
  34  6.0865068e-03 0.00e+00 1.66e-06  -8.1 2.70e-04    -  1.00e+00 5.00e-01h  2
  35  6.0865046e-03 0.00e+00 1.38e-06  -8.1 6.41e-04    -  1.00e+00 1.00e+00h  1
  36  6.0865045e-03 0.00e+00 6.00e-07  -8.1 2.03e-03    -  1.00e+00 6.25e-02h  5
  37  6.0865047e-03 0.00e+00 1.82e-07  -8.1 8.41e-05    -  1.00e+00 1.00e+00h  1
  38  6.0865046e-03 0.00e+00 3.38e-06  -8.1 8.85e-05    -  1.00e+00 1.00e+00H  1
  39  6.0865046e-03 0.00e+00 2.73e-06  -8.1 1.71e-04    -  1.00e+00 6.25e-02h  5
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  40  6.0865047e-03 0.00e+00 5.56e-07  -8.1 1.47e-04    -  1.00e+00 5.00e-01h  2
  41  6.0865048e-03 0.00e+00 3.22e-07  -8.1 5.46e-05    -  1.00e+00 1.00e+00h  1
  42  6.0865048e-03 0.00e+00 1.89e-07  -8.1 8.15e-05    -  1.00e+00 2.50e-01h  3
  43  6.0865049e-03 0.00e+00 1.48e-07  -8.1 3.87e-05    -  1.00e+00 1.00e+00h  1
  44  6.0865051e-03 0.00e+00 1.03e-06  -8.1 8.67e-05    -  1.00e+00 1.00e+00h  1
  45  6.0865049e-03 0.00e+00 2.82e-08  -8.1 7.33e-05    -  1.00e+00 1.00e+00h  1
  46  6.0863531e-03 0.00e+00 1.17e-06  -9.0 6.02e-04    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
  47  6.0863506e-03 0.00e+00 9.92e-06  -9.2 2.25e-02    -  1.00e+00 6.17e-02f  4
  48  6.0863478e-03 0.00e+00 8.95e-06  -9.1 1.22e-02    -  1.00e+00 1.25e-01f  4
  49  6.0863446e-03 0.00e+00 1.53e-05  -9.6 9.93e-03    -  1.00e+00 1.25e-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
  50  6.0863362e-03 0.00e+00 1.15e-05 -10.9 2.95e-02    -  1.00e+00 1.55e-01f  3
Warning: Cutting back alpha due to evaluation error
  51  6.0863313e-03 0.00e+00 9.69e-06  -9.0 3.24e-02    -  1.00e+00 6.51e-02f  3
Warning: Cutting back alpha due to evaluation error
  52  6.0863291e-03 0.00e+00 3.10e-05  -9.1 4.54e-02    -  1.00e+00 8.00e-02f  3
Warning: Cutting back alpha due to evaluation error
  53  6.0863695e-03 0.00e+00 2.45e-05  -8.4 9.36e-03    -  1.00e+00 2.37e-01f  2
  54  6.0863814e-03 0.00e+00 6.93e-06  -8.6 1.05e-02    -  8.82e-01 1.00e+00f  1
  55  6.0863726e-03 0.00e+00 1.28e-05  -8.6 7.37e-02    -  3.71e-01 1.76e-02f  4
  56  6.0863664e-03 0.00e+00 1.29e-05  -8.6 7.57e-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
  57  6.0863652e-03 0.00e+00 9.86e-06  -8.6 1.02e-02    -  6.00e-01 2.10e-02f  6
  58  6.0863627e-03 0.00e+00 4.63e-06  -8.6 3.92e-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
  59  6.0863624e-03 0.00e+00 2.70e-06  -8.6 8.17e-03    -  1.00e+00 1.41e-02h  7
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  60  6.0863612e-03 0.00e+00 5.26e-07  -8.6 7.42e-04    -  1.00e+00 1.00e+00h  1
  61  6.0863626e-03 0.00e+00 5.49e-06  -8.6 4.82e-03    -  1.00e+00 2.50e-01h  3
  62  6.0863625e-03 0.00e+00 5.17e-06  -8.6 4.24e-04    -  1.00e+00 1.56e-02h  7
  63  6.0863609e-03 0.00e+00 5.27e-06  -8.6 5.09e-04    -  1.00e+00 1.00e+00f  1
  64  6.0863604e-03 0.00e+00 6.27e-06  -8.6 1.74e-03    -  1.00e+00 5.00e-01h  2
  65  6.0863604e-03 0.00e+00 5.87e-06  -8.6 1.90e-03    -  1.00e+00 3.91e-03h  9
  66  6.0863604e-03 0.00e+00 6.16e-06  -8.6 2.07e-03    -  1.00e+00 7.81e-03h  8
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
  67  6.0863600e-03 0.00e+00 3.41e-06  -8.6 1.09e-02    -  1.00e+00 1.39e-02f  7
  68  6.0863604e-03 0.00e+00 5.50e-07  -8.6 8.38e-04    -  1.00e+00 1.00e+00h  1
  69  6.0863603e-03 0.00e+00 5.03e-07  -8.6 5.00e-04    -  1.00e+00 1.25e-01h  4
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  70  6.0863602e-03 0.00e+00 3.64e-07  -8.6 8.59e-05    -  1.00e+00 1.00e+00h  1
  71  6.0863602e-03 0.00e+00 3.29e-07  -8.6 3.54e-04    -  1.00e+00 6.25e-02h  5
  72  6.0863600e-03 0.00e+00 1.61e-07  -8.6 1.21e-04    -  1.00e+00 1.00e+00h  1
  73  6.0863598e-03 0.00e+00 8.48e-07  -8.6 8.73e-03    -  1.00e+00 6.25e-02h  5
  74  6.0863600e-03 0.00e+00 2.95e-06  -8.6 1.51e-03    -  1.00e+00 6.25e-02h  5
  75  6.0863597e-03 0.00e+00 1.46e-07  -8.6 2.07e-04    -  1.00e+00 1.00e+00h  1
  76  6.0863597e-03 0.00e+00 1.13e-06  -8.6 8.25e-05    -  1.00e+00 1.00e+00H  1
  77  6.0863597e-03 0.00e+00 6.63e-08  -8.6 8.00e-05    -  1.00e+00 1.00e+00h  1
  78  6.0863597e-03 0.00e+00 1.37e-07  -8.6 3.89e-05    -  1.00e+00 1.00e+00h  1
  79  6.0863600e-03 0.00e+00 3.45e-06  -8.6 1.41e-04    -  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.0863597e-03 0.00e+00 1.74e-07  -8.6 1.43e-04    -  1.00e+00 1.00e+00h  1
  81  6.0863597e-03 0.00e+00 8.97e-07  -8.6 1.54e-04    -  1.00e+00 5.00e-01h  2
  82  6.0863597e-03 0.00e+00 5.23e-07  -8.6 5.98e-05    -  1.00e+00 1.00e+00H  1
  83  6.0863597e-03 0.00e+00 2.24e-07  -8.6 2.62e-04    -  1.00e+00 2.50e-01h  3
  84  6.0863597e-03 0.00e+00 2.64e-07  -8.6 7.59e-05    -  1.00e+00 2.50e-01h  3
  85  6.0863597e-03 0.00e+00 1.14e-08  -8.6 3.32e-05    -  1.00e+00 1.00e+00h  1
  86  6.0863295e-03 0.00e+00 1.69e-06  -9.0 1.32e-03    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
  87  6.0863785e-03 0.00e+00 1.95e-05  -9.0 2.45e-02    -  1.00e+00 4.81e-01h  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  88  6.0863660e-03 0.00e+00 2.06e-05  -9.0 2.31e-03    -  1.00e+00 2.50e-01f  3
  89  6.0863599e-03 0.00e+00 2.30e-05  -9.0 1.03e-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
  90  6.0863497e-03 0.00e+00 1.13e-05  -9.0 1.27e-01    -  1.36e-01 4.43e-02f  4
  91  6.0863456e-03 0.00e+00 1.15e-05  -9.0 2.02e-02    -  2.72e-01 2.14e-02f  5
  92  6.0863325e-03 0.00e+00 1.10e-05  -9.0 4.03e-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
  93  6.0863303e-03 0.00e+00 2.59e-05  -9.0 5.20e-02    -  1.00e+00 4.27e-02f  4
  94  6.0864100e-03 0.00e+00 2.46e-05  -9.0 5.09e-03    -  1.00e+00 1.00e+00H  1
  95  6.0863361e-03 0.00e+00 8.37e-06  -9.0 1.33e-03    -  1.00e+00 1.00e+00f  1
  96  6.0863304e-03 0.00e+00 5.60e-06  -9.0 9.15e-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
Warning: Cutting back alpha due to evaluation error
  97  6.0863300e-03 0.00e+00 4.89e-06  -9.0 1.32e-02    -  4.13e-01 2.66e-02f  6
  98  6.0863291e-03 0.00e+00 2.49e-06  -9.0 4.70e-04    -  1.00e+00 1.00e+00h  1
  99  6.0863292e-03 0.00e+00 5.49e-06  -9.0 7.71e-04    -  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.0863289e-03 0.00e+00 5.17e-06  -9.0 1.18e-03    -  1.00e+00 1.00e+00h  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 101  6.0863307e-03 0.00e+00 4.59e-06  -8.8 1.12e-02    -  1.00e+00 6.25e-02h  5
 102  6.0863371e-03 0.00e+00 7.02e-06  -8.9 2.15e-03    -  1.00e+00 1.00e+00H  1
 103  6.0863362e-03 0.00e+00 4.76e-06  -8.9 2.81e-03    -  1.00e+00 5.00e-01f  2
 104  6.0863489e-03 0.00e+00 1.49e-05  -8.9 4.25e-03    -  1.00e+00 1.00e+00h  1
 105  6.0863383e-03 0.00e+00 9.78e-06  -8.9 3.56e-03    -  1.00e+00 5.00e-01f  2
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 106  6.0863382e-03 0.00e+00 1.02e-05  -8.9 1.75e-02    -  1.00e+00 1.00e-03h 10
 107  6.0863372e-03 0.00e+00 7.87e-06  -8.9 4.84e-03    -  1.00e+00 6.25e-02h  5
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
 108  6.0863369e-03 0.00e+00 1.82e-05  -8.9 3.15e-02    -  7.69e-01 1.25e-01f  4
 109  6.0863356e-03 0.00e+00 6.09e-06  -8.9 7.97e-02    -  4.58e-01 1.26e-02f  7
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 110  6.0863375e-03 0.00e+00 8.57e-06  -8.9 7.11e-04    -  1.00e+00 5.00e-01h  2
 111  6.0863331e-03 0.00e+00 9.12e-07  -8.9 1.93e-03    -  1.00e+00 1.00e+00f  1
 112  6.0863330e-03 0.00e+00 1.02e-06  -8.9 1.61e-03    -  1.00e+00 6.25e-02h  5
 113  6.0863328e-03 0.00e+00 1.97e-06  -8.9 7.69e-04    -  1.00e+00 5.00e-01h  2
 114  6.0863452e-03 0.00e+00 1.38e-05  -8.9 3.98e-03    -  1.00e+00 5.00e-01h  2
 115  6.0863448e-03 0.00e+00 1.36e-05  -8.9 2.82e-03    -  1.00e+00 1.56e-02h  7
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.0863449e-03 0.00e+00 1.14e-05  -8.9 1.13e-02    -  6.87e-01 4.28e-02f  5
 117  6.0863337e-03 0.00e+00 4.50e-06  -8.9 3.56e-03    -  1.00e+00 1.00e+00f  1
 118  6.0863337e-03 0.00e+00 4.74e-06  -8.9 5.47e-03    -  1.00e+00 3.05e-05h 16
 119  6.0863336e-03 0.00e+00 4.46e-06  -8.9 2.15e-03    -  1.00e+00 7.81e-03h  8
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 120  6.0863334e-03 0.00e+00 3.35e-06  -8.9 1.29e-03    -  1.00e+00 1.00e+00f  1
 121  6.0863333e-03 0.00e+00 2.67e-06  -8.9 3.50e-03    -  1.00e+00 1.56e-02h  7
 122  6.0863329e-03 0.00e+00 8.50e-07  -8.9 1.57e-04    -  1.00e+00 1.00e+00h  1
 123  6.0863329e-03 0.00e+00 2.07e-06  -8.9 1.14e-04    -  1.00e+00 2.50e-01h  3
 124  6.0863328e-03 0.00e+00 8.01e-08  -8.9 2.35e-05    -  1.00e+00 1.00e+00h  1
 125  6.0863328e-03 0.00e+00 2.28e-08  -8.9 2.32e-06    -  1.00e+00 1.00e+00h  1
 126  6.0863328e-03 0.00e+00 1.17e-07  -8.9 1.31e-05    -  1.00e+00 1.00e+00h  1
 127  6.0863329e-03 0.00e+00 2.43e-07  -8.9 9.48e-05    -  1.00e+00 1.00e+00h  1
 128  6.0863329e-03 0.00e+00 1.99e-07  -8.9 3.45e-05    -  1.00e+00 2.50e-01h  3
 129  6.0863328e-03 0.00e+00 1.54e-07  -8.9 9.17e-05    -  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.0863328e-03 0.00e+00 1.43e-07  -8.9 9.72e-05    -  1.00e+00 1.95e-03h 10
 131  6.0863328e-03 0.00e+00 1.36e-06  -8.9 1.68e-05    -  1.00e+00 1.00e+00h  1
 132  6.0863328e-03 0.00e+00 2.49e-07  -8.9 4.20e-05    -  1.00e+00 1.00e+00h  1
 133  6.0863328e-03 0.00e+00 7.96e-08  -8.9 2.19e-05    -  1.00e+00 2.50e-01h  3
 134  6.0863328e-03 0.00e+00 1.27e-08  -8.9 1.11e-05    -  1.00e+00 1.00e+00h  1
 135  6.0863328e-03 0.00e+00 1.98e-08  -8.9 1.17e-05    -  1.00e+00 5.00e-01h  2
 136  6.0863328e-03 0.00e+00 9.20e-08  -8.9 3.45e-05    -  1.00e+00 1.00e+00H  1
 137  6.0863328e-03 0.00e+00 8.99e-08  -8.9 2.16e-05    -  1.00e+00 1.56e-02h  7
 138  6.0863328e-03 0.00e+00 8.79e-08  -8.9 1.02e-04    -  1.00e+00 6.10e-05h 15
 139  6.0863328e-03 0.00e+00 8.99e-08  -8.9 1.64e-04    -  1.00e+00 3.05e-05h 16
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 140  6.0863328e-03 0.00e+00 1.42e-07  -8.9 3.98e-05    -  1.00e+00 1.25e-01h  4
 141  6.0863328e-03 0.00e+00 1.18e-06  -8.9 1.80e-04    -  1.00e+00 1.00e+00H  1
 142  6.0863328e-03 0.00e+00 2.18e-07  -8.9 1.40e-04    -  1.00e+00 1.00e+00H  1
 143  6.0863328e-03 0.00e+00 7.51e-08  -8.9 1.20e-04    -  1.00e+00 2.50e-01h  3
 144  6.0863328e-03 0.00e+00 6.97e-08  -8.9 1.36e-05    -  1.00e+00 1.00e+00h  1
 145  6.0863328e-03 0.00e+00 8.73e-08  -8.9 3.14e-05    -  1.00e+00 5.00e-01h  2
 146  6.0863328e-03 0.00e+00 6.42e-08  -8.9 1.33e-05    -  1.00e+00 2.50e-01h  3
 147  6.0863328e-03 0.00e+00 6.81e-08  -8.9 1.06e-05    -  1.00e+00 1.00e+00h  1
 148  6.0863328e-03 0.00e+00 1.03e-07  -8.9 1.40e-04    -  1.00e+00 6.25e-02h  5
 149  6.0863328e-03 0.00e+00 1.33e-08  -8.9 6.92e-06    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
 150  6.0863328e-03 0.00e+00 9.84e-08  -8.9 8.70e-06    -  1.00e+00 1.00e+00H  1
 151  6.0863328e-03 0.00e+00 1.18e-08  -8.9 6.21e-06    -  1.00e+00 1.00e+00h  1
 152  6.0863328e-03 0.00e+00 2.18e-08  -8.9 3.39e-06    -  1.00e+00 5.00e-01h  2
 153  6.0863328e-03 0.00e+00 1.23e-08  -8.9 1.50e-06    -  1.00e+00 1.00e+00h  1
 154  6.0863328e-03 0.00e+00 2.55e-08  -8.9 2.12e-06    -  1.00e+00 5.00e-01h  2
 155  6.0863328e-03 0.00e+00 1.31e-08  -8.9 4.57e-06    -  1.00e+00 5.00e-01h  2
 156  6.0863328e-03 0.00e+00 5.52e-09  -8.9 6.02e-07    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 156

                                   (scaled)                 (unscaled)
Objective...............:   6.0863328076560521e-03    6.0863328076560521e-03
Dual infeasibility......:   5.5201371834903334e-09    5.5201371834903334e-09
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Variable bound violation:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   1.1540964576340208e-09    1.1540964576340208e-09
Overall NLP error.......:   5.5201371834903334e-09    5.5201371834903334e-09


Number of objective function evaluations             = 519
Number of objective gradient evaluations             = 157
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 519
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 157
Number of Lagrangian Hessian evaluations             = 0
Total seconds in IPOPT                               = 0.417

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.1440172e-03 0.00e+00 2.32e-02   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  6.1457076e-03 0.00e+00 4.19e-03  -6.3 7.79e-03    -  9.73e-01 1.00e+00h  1
   2  6.1446675e-03 0.00e+00 5.48e-05  -7.9 8.40e-04    -  9.87e-01 1.00e+00f  1
   3  6.1620625e-03 0.00e+00 1.94e-06  -5.4 1.37e-02    -  1.00e+00 1.00e+00f  1
   4  6.2074485e-03 0.00e+00 1.14e-03  -5.5 8.45e-01    -  4.71e-01 7.28e-01f  1
   5  6.1746683e-03 0.00e+00 5.77e-05  -5.5 1.64e-01    -  3.15e-02 1.00e+00f  1
   6  6.1685694e-03 0.00e+00 2.69e-05  -5.5 7.11e-02    -  1.00e+00 1.00e+00f  1
   7  6.1018781e-03 0.00e+00 1.48e-05  -8.3 7.04e-02    -  6.96e-01 9.49e-01f  1
   8  6.1028585e-03 0.00e+00 2.76e-05  -6.5 1.34e-01    -  9.78e-01 1.00e+00f  1
   9  6.1006307e-03 0.00e+00 3.90e-05  -6.6 1.11e-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.0956615e-03 0.00e+00 9.40e-05  -7.2 6.30e-02    -  1.00e+00 1.00e+00f  1
  11  6.0978561e-03 0.00e+00 3.15e-05  -6.7 5.88e-02    -  1.00e+00 1.00e+00f  1
  12  6.0952548e-03 0.00e+00 2.22e-05  -6.8 4.78e-02    -  1.00e+00 1.00e+00f  1
  13  6.0927631e-03 0.00e+00 2.63e-05  -7.2 1.46e-01    -  1.00e+00 4.02e-01f  2
  14  6.0910306e-03 0.00e+00 2.48e-05  -8.0 1.99e-01    -  1.00e+00 2.44e-01f  2
  15  6.1069332e-03 0.00e+00 2.75e-05  -6.4 3.49e-01    -  1.00e+00 1.00e+00f  1
  16  6.1014060e-03 0.00e+00 5.13e-05  -6.4 2.22e-01    -  1.00e+00 1.00e+00f  1
  17  6.1000880e-03 0.00e+00 2.65e-05  -6.4 1.41e-01    -  9.14e-01 3.15e-01f  2
  18  6.0993925e-03 0.00e+00 1.44e-05  -6.4 6.05e-02    -  1.00e+00 1.00e+00f  1
  19  6.0995930e-03 0.00e+00 1.07e-05  -6.4 2.62e-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.0995344e-03 0.00e+00 3.22e-06  -6.4 9.10e-03    -  1.00e+00 1.00e+00f  1
  21  6.0896715e-03 0.00e+00 1.47e-05  -9.0 1.10e-01    -  8.16e-01 9.83e-01f  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  22  6.0894364e-03 0.00e+00 2.23e-05  -8.3 1.64e-01    -  1.00e+00 1.16e-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
  23  6.0893604e-03 0.00e+00 1.79e-05  -9.0 1.24e-01    -  1.00e+00 3.12e-02f  6
  24  6.0935720e-03 0.00e+00 9.69e-04  -7.0 1.01e-01    -  1.00e+00 4.13e-01f  1
Warning: Cutting back alpha due to evaluation error
  25  6.0900806e-03 0.00e+00 1.82e-04  -7.2 1.04e-01    -  1.40e-02 3.89e-01f  2
Warning: Cutting back alpha due to evaluation error
  26  6.0895928e-03 0.00e+00 8.04e-05  -7.2 2.19e-02    -  5.32e-01 3.41e-01f  2
  27  6.0898247e-03 0.00e+00 6.26e-05  -7.2 1.47e-02    -  1.00e+00 1.00e+00f  1
  28  6.0898400e-03 0.00e+00 3.57e-05  -7.2 3.30e-02    -  7.29e-01 2.50e-01f  3
  29  6.0900396e-03 0.00e+00 4.91e-05  -7.2 2.23e-02    -  1.00e+00 1.00e+00f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30  6.0900127e-03 0.00e+00 2.17e-05  -7.2 3.57e-02    -  1.00e+00 2.50e-01f  3
  31  6.0899612e-03 0.00e+00 2.39e-05  -7.2 2.88e-03    -  1.00e+00 1.00e+00f  1
  32  6.0899254e-03 0.00e+00 1.60e-05  -7.2 4.55e-03    -  1.00e+00 1.00e+00f  1
  33  6.0899701e-03 0.00e+00 1.52e-05  -7.2 4.67e-02    -  9.40e-01 2.50e-01f  3
  34  6.0901010e-03 0.00e+00 1.08e-05  -7.2 1.05e-02    -  1.00e+00 1.00e+00f  1
  35  6.0900895e-03 0.00e+00 7.81e-06  -7.2 1.35e-02    -  1.00e+00 5.00e-01f  2
  36  6.0900389e-03 0.00e+00 8.25e-06  -7.2 7.39e-03    -  1.00e+00 1.00e+00f  1
  37  6.0899893e-03 0.00e+00 2.77e-06  -7.2 4.11e-03    -  1.00e+00 1.00e+00f  1
  38  6.0900040e-03 0.00e+00 2.69e-06  -7.2 4.26e-03    -  1.00e+00 1.00e+00h  1
  39  6.0900078e-03 0.00e+00 2.64e-06  -7.2 2.45e-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.0900059e-03 0.00e+00 8.75e-07  -7.2 4.84e-03    -  1.00e+00 5.00e-01h  2
  41  6.0900019e-03 0.00e+00 6.75e-07  -7.2 2.09e-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
  42  6.0897538e-03 0.00e+00 5.94e-06  -9.0 4.28e-02    -  9.40e-01 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
  43  6.0896563e-03 0.00e+00 4.98e-06  -9.0 1.60e-01    -  1.00e+00 3.26e-02f  5
Warning: Cutting back alpha due to evaluation error
  44  6.0892990e-03 0.00e+00 2.69e-05  -9.0 1.71e-01    -  1.00e+00 2.54e-01f  2
Warning: Cutting back alpha due to evaluation error
  45  6.0886327e-03 0.00e+00 3.41e-05  -8.2 5.60e-02    -  1.00e+00 4.29e-01f  2
  46  6.0886472e-03 0.00e+00 2.34e-05  -7.4 8.66e-02    -  6.12e-01 6.12e-02f  3
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  47  6.0885928e-03 0.00e+00 1.80e-05  -7.7 2.86e-02    -  9.00e-01 2.50e-01f  3
Warning: Cutting back alpha due to evaluation error
  48  6.0884279e-03 0.00e+00 4.82e-05  -8.7 3.91e-02    -  1.00e+00 2.30e-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
  49  6.0883906e-03 0.00e+00 3.70e-05  -9.9 4.03e-02    -  1.00e+00 4.12e-02f  5
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  50  6.0883839e-03 0.00e+00 3.25e-05  -7.8 4.18e-02    -  1.00e+00 1.25e-01f  4
Warning: Cutting back alpha due to evaluation error
  51  6.0880989e-03 0.00e+00 3.04e-05  -9.1 2.91e-02    -  1.00e+00 5.00e-01f  2
  52  6.0880662e-03 0.00e+00 4.74e-05 -10.3 3.37e-02    -  1.00e+00 2.14e-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
  53  6.0880273e-03 0.00e+00 4.35e-05 -11.0 3.95e-02    -  1.00e+00 8.25e-02f  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
  54  6.0880142e-03 0.00e+00 1.83e-03 -11.0 8.65e-02    -  5.05e-01 2.28e-02f  4
Warning: Cutting back alpha due to evaluation error
  55  6.0880046e-03 0.00e+00 9.97e-05  -8.7 4.04e-02    -  9.08e-01 3.64e-02f  4
  56  6.0879578e-03 0.00e+00 2.64e-05  -8.5 1.05e-02    -  1.00e+00 1.00e+00f  1
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  57  6.0879290e-03 0.00e+00 3.66e-05  -9.8 4.06e-02    -  1.00e+00 1.06e-01f  3
Warning: Cutting back alpha due to evaluation error
  58  6.0879176e-03 0.00e+00 3.54e-05 -10.3 2.63e-02    -  4.84e-01 6.53e-02f  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
  59  6.0879026e-03 0.00e+00 1.27e-04 -11.0 1.52e-02    -  9.59e-01 1.25e-01f  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
  60  6.0878905e-03 0.00e+00 6.47e-05  -8.5 1.75e+00    -  3.70e-02 7.64e-03f  3
Warning: Cutting back alpha due to evaluation error
  61  6.0878941e-03 0.00e+00 3.18e-05  -8.2 2.13e-02    -  1.00e+00 3.13e-02f  4
  62  6.0879232e-03 0.00e+00 3.07e-05  -8.4 4.48e-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
  63  6.0879227e-03 0.00e+00 6.08e-04  -8.4 2.89e-02    -  1.00e+00 3.11e-02f  5
Warning: Cutting back alpha due to evaluation error
  64  6.0879202e-03 0.00e+00 1.46e-04  -8.4 1.37e-02    -  1.00e+00 6.08e-02f  5
  65  6.0879228e-03 0.00e+00 7.32e-05  -8.4 3.21e-03    -  9.69e-01 2.50e-01f  3
  66  6.0879538e-03 0.00e+00 6.58e-05  -8.4 5.26e-03    -  1.00e+00 1.00e+00h  1
  67  6.0879287e-03 0.00e+00 7.47e-05  -8.4 2.51e-03    -  1.00e+00 1.00e+00f  1
  68  6.0879273e-03 0.00e+00 7.02e-05  -8.4 7.74e-03    -  1.00e+00 1.25e-01h  4
  69  6.0879247e-03 0.00e+00 4.52e-05  -8.4 4.25e-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.0879732e-03 0.00e+00 6.68e-05  -8.4 1.03e-02    -  1.00e+00 4.93e-01h  2
Warning: Cutting back alpha due to evaluation error
  71  6.0879506e-03 0.00e+00 6.26e-05  -8.4 1.28e-02    -  1.00e+00 2.50e-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
  72  6.0879506e-03 0.00e+00 5.85e-05  -8.4 9.82e-03    -  3.98e-01 3.69e-10h 32
Warning: Cutting back alpha due to evaluation error
  73  6.0879506e-03 0.00e+00 6.05e-05  -8.4 3.89e-02    -  4.67e-01 7.63e-06h 18
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  74  6.0879500e-03 0.00e+00 6.02e-05  -8.4 2.77e-02    -  1.00e+00 1.83e-03f  9
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  75  6.0879426e-03 0.00e+00 1.04e-04  -8.4 1.65e-02    -  5.13e-01 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
  76  6.0879420e-03 0.00e+00 4.24e-05  -8.4 1.85e-02    -  5.50e-01 7.81e-03f  8
  77  6.0879420e-03 0.00e+00 4.60e-05  -8.4 1.87e-03    -  1.00e+00 4.77e-07h 22
  78  6.0879664e-03 0.00e+00 4.24e-05  -8.4 1.25e-02    -  1.00e+00 1.00e+00w  1
Warning: Cutting back alpha due to evaluation error
  79  6.0879362e-03 0.00e+00 3.83e-05  -8.4 3.64e-02    -  1.00e+00 1.25e-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
  80  6.0879362e-03 0.00e+00 3.57e-05  -8.4 3.59e-02    -  1.53e-01 7.88e-06h 16
  81  6.0879322e-03 0.00e+00 3.43e-05  -8.4 2.73e-03    -  1.00e+00 1.25e-01f  4
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  82  6.0879295e-03 0.00e+00 3.91e-05  -8.4 5.28e-03    -  7.71e-01 1.25e-01f  4
Warning: Cutting back alpha due to evaluation error
Warning: Cutting back alpha due to evaluation error
  83  6.0879295e-03 0.00e+00 1.49e-05  -8.4 3.19e-03    -  9.31e-01 7.09e-03f  8
  84  6.0879204e-03 0.00e+00 7.44e-06  -8.4 6.14e-04    -  1.00e+00 1.00e+00h  1
  85  6.0879208e-03 0.00e+00 3.70e-06  -8.4 1.21e-03    -  1.00e+00 1.00e+00h  1
Buckling-constrained result:
  obj = 0.006088090114746645
  vol = -2.3092344774711115e-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.7999557695228199
Buckling-constrained min eigenvalue: 0.0017642759244268199
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.