Hi everyone!

I’m a new Julia user.

I am using Julia 1.2 and JuMP v0.20.0 for some optimization problems.

I have a constrained nonlinear optimization and I would like to define a nonlinear objective function composed by two parts: one is a sum of vector components (each multiplied by a different coefficient), while the other one should be insert in the objective function only if some optimization variables (xNL[[Nvar*(i-1)+1]]) assume a value above a certain tolerance (>1e-4).

I think the expression “>” is not supported in @NLobjective, is there some way to obtain the NLobjective function I need?

I attach a photo which shows part of my JuMP model and the relative error.

Thanks in advance for help!

You cannot use `>`

in a sum like this. To model this properly, you will need to add binary variables, transforming your problem into a mixed-integer nonlinear program (i.e., very hard to solve), and you won’t be able to use Ipopt. Are you sure you want to have a hard 0-1 jump?

A slightly relaxed approach could be to use a sigmoid centered at `1e-4`

.

p.s., You should read the first post of: Please read: make it easier to help you. In particular, it’s much easier to help if you post the text of your code, rather than a photo.

thank you very much for the answer! I used the sigmoid and it works!

I’m sorry for posting the screenshot, next time I’ll text my code following the ten points shown in the post!

Thanks again!