Python and Pyomo for multi objective optimisation

64 views Asked by At

I am currently using python and pyomo for optimisation problems, however the problem I am working on is multi objective optimisation. It involves finding the optimal (x,y) positions of nodes based on their geographical location and also implementing a specific layout(octilinear).

I have written my constraints and objective functions using pyomo, and both objective functions work separately, but when combining them together, using weighted sum where I am minimizing a penalty value for both objective functions, I cannot get a correct response.

I am only familiar with doing optimisation using pyomo and am wondering if anyone has used other packages for it such as PYAUGMECON? I see that it has only been released in the past few years so there is not a lot of information on it.

I have also read that pymoo is another python package that is popular for multi objective optimisation, however I am not familiar with it and the code layout in comparison to pyomo.

Currently I have defined all my constraints for my geographical constraints and also the specific layout I desire. I am able to get the correct output for the positioning of the nodes when I implement that particular objective function. It is implement by minimizing the penalty value for the layout. The penalty value increases when the nodes are not in the correct layout.

I have implemented a similar method for my geographical positioning of the nodes using a penalty value aswell. But when I combine these two objective functions where I am minimizing the penalty values for both the layout and the geographical positions, I cannot get the correct output. I have tried adjusting a weight value for each of these penalty values but it hasn't helped, and often the optimised x y coordinates end up all being (0, 0). I am currently testing with a small dataset of approximately 9 nodes.

I have also added additional constraints to make sure that they are linear so that I am not dealing with a non linear problem.

Can someone please share some knowledge or guidance on this? I'd really appreciate it!

1

There are 1 answers

0
npaterak On

I'm one of the developers of PyAUGMECON. Assuming that you already have a pyomo model and know what your objective functions are, it should be easy to call pyaugmecon to solve your multi-objective problem (see the examples in the "tests" folder). Regarding the optimization methods that are implemented in PyAUGMECON, check the "Useful resources" section of the documentation for more details.

If you have specific concerns, feel free to ask any questions or raise an issue.