How to perform a mathematical optimization with tight dependence between objectives and variables? [closed]

I'm not sure if this question belongs to software engineering or mathematics, but I'll try here. I am coding a physics simulation where I need to perform mathematical optimization. There are 3 control variables, let's call them A, B, C, and three objective functions to minimize, let's call them A1, B1, C1. The variables and objectives have known dependence: Varying A affects A1 a lot, but affects B1 and C1 very little; Varying B affects B1 a lot, but affects A1 and C1 very little; Varying C affects C1 a lot, but affects A1 and B1 very little. In traditional mathematical optimization, there is typically just one objective function, meaning I would have to merge A1, B1 and C1 into one objective. However, solving this becomes highly inefficient, as the knowledge of these dependencies is lost by the merging, resulting in much higher number of passes needed to determine the values of control variables that minimize that combined objective. It would be much better to preserve this knowledge, so the optimizer would "know" that, for example, if objective A1 is off by a lot, it should prioritize adjusting control variable A instead of B or C. Does anyone have any insights on how to define the optimization task for such a problem? Specifically, I am using NLOPT optimization library in my project, but unfortunately it does not allow specifying multiple objectives or describing expected relations between control variables and these objectives. Is it possible to work around this issue somehow? How is such problem typically solved?

Feb 13, 2025 - 10:37
 0
How to perform a mathematical optimization with tight dependence between objectives and variables? [closed]

I'm not sure if this question belongs to software engineering or mathematics, but I'll try here. I am coding a physics simulation where I need to perform mathematical optimization. There are 3 control variables, let's call them A, B, C, and three objective functions to minimize, let's call them A1, B1, C1. The variables and objectives have known dependence:

  1. Varying A affects A1 a lot, but affects B1 and C1 very little;

  2. Varying B affects B1 a lot, but affects A1 and C1 very little;

  3. Varying C affects C1 a lot, but affects A1 and B1 very little.

In traditional mathematical optimization, there is typically just one objective function, meaning I would have to merge A1, B1 and C1 into one objective. However, solving this becomes highly inefficient, as the knowledge of these dependencies is lost by the merging, resulting in much higher number of passes needed to determine the values of control variables that minimize that combined objective. It would be much better to preserve this knowledge, so the optimizer would "know" that, for example, if objective A1 is off by a lot, it should prioritize adjusting control variable A instead of B or C.

Does anyone have any insights on how to define the optimization task for such a problem? Specifically, I am using NLOPT optimization library in my project, but unfortunately it does not allow specifying multiple objectives or describing expected relations between control variables and these objectives. Is it possible to work around this issue somehow? How is such problem typically solved?