Clear Filters
Clear Filters

How can I associate complicated constraints in optimization problems using fmincon or intlinprog?

6 views (last 30 days)
Greetings,
I'm trying to solve an optimization problem using fmincon or intlinprog, but I need to associate some very complicated restrictions with the problem. My cost function is defined by the absolute value of a sum of complex numbers in which the phases are the variables that must be optimized and the absolute values of these complex numbers are known. That said, I would like to add a restriction defined by the absolute value of the difference between the absolute values of two sums of complex numbers: the first term is the cost function itself and the second term is another absolute value of the sum of complex numbers with absolute values known and phases corresponding to the problem variables. I would like to know how to add this restriction (Is this really possible?) using fmincon and intlinprog (these phases can be continuous or discrete). I attached the mathematical expressions to make everything clear.
Optimization Problem:
Restriction:

Answers (1)

Walter Roberson
Walter Roberson on 13 Dec 2023
Use the nonlinear contraint function.
f(x)-g(x)<=c translates into f(x)-g(x)-c <= 0 so return f(x)-g(x)
Caution: nonlinear contraints are not necessarily valid at all times .
  3 Comments
Matt J
Matt J on 18 Dec 2023
Edited: Matt J on 18 Dec 2023
intlinprog cannot be applied to nonlinear discrete problems. You would have to use ga(), where nonlinear constraint are expressed in the same manner.
Gabriel
Gabriel on 18 Dec 2023
Excellent! I will try to use the genetic algorithm function and come back here with an example of discrete variables and non-linear constraints. Thank you for the tip.

Sign in to comment.

Categories

Find more on Linear Programming and Mixed-Integer Linear Programming in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!