Problem setting the Local Optimizer

The problem is that LD_MMA supports nonlinear inequality constraints, but not equality constraints.:
https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/#mma-method-of-moving-asymptotes-and-ccsa

You could try :LD_SLSQP instead.

Alternatively, it might be more readable if you used JuMP:

using JuMP, Ipopt
model = Model(Ipopt.Optimizer)
@variable(model, 0 <= x[1:22650] <= 1, start = 1 / 150)
@NLobjective(
    model,
    Min,
    sum(cost[i] * x[i] for i in 1:22500) +
    50 * sum(10 * x[i]^2 / (10 * x[i] + 0.001) for i in 22501:22650),
)
@constraint(model, [i=1:150, j=1:150], x[150*(i-1)+j] <= x[22500+j])
@constraint(model, [i=1:150], sum(x[150*(i-1)+j] for j in 1:150) == 1)
@constraint(model, sum(x[i] for i in 22501:22650) == 3)
optimize!(model)
3 Likes