How to use simulated annealing to optimize a simulation based, multicriteria Problem?

4 visualizzazioni (ultimi 30 giorni)
Hello all, I try to optimize some parameters of a Simulink Model which works fine. The outcome of this model are 3 values (energy used, elapsed time and the cost resulting) so this is a multicriteria problem. So far, for this use case, I have used the weighted sums method (all these criteria summed up) in conjunction with a patternsearch algorithm. There are 2 main questions resulting:
1. how can I optimize multicriteria using the simulated annealing algorithm? When I form a struct from the three output functions, simulannealbnd reports errors.
2. is there a possibility to tell the algorithm via constraints that not all values are allowed but that there is a certain step size (say lb=10 - ub=100 in steps of 10)?

Risposte (1)

Alan Weiss
Alan Weiss il 6 Set 2021
Your question confuses me because you talk about having a multiobjective problem but then seem to want to use simulannealbnd to solve it. If you want to solve a multiobjective problem, use gamultiobj or paretosearch. See Multiobjective Optimization.
Alan Weiss
MATLAB mathematical toolbox documentation
  3 Commenti
Alan Weiss
Alan Weiss il 6 Set 2021
I didn't say there was no way. But it is ill-advised to use simulannealbnd for most purposes. It is a very slow solver, generally providing no benefit compared to patternsearch.
You can use a single-objective solver to find a Pareto front. See Generate and Plot Pareto Front for an example. That example uses fgoalattain, but you could use simulannealbnd as the scalar optimizer. You will have to extend the example from 2-D to 3-D, but that should not prove to be too difficult.
Bottom line: you CAN do it, but it seems to me to be a waste of time and resources. There are better ways.
Alan Weiss
MATLAB mathematical toolbox documentation
Robin
Robin il 6 Set 2021
Your advice describes the method I currently use for simulated annealing. Then I will look at GA to determine if the multi-objective view is beneficial in my use case.
On the other point: I am currently optimizing (simulation based) the complete double range. After that i round the result to the points i want them to be (e.g. multiples of 10) and simulate again with those rounded numbers. Is this one of the ways youre reffering to?
Thanks for your answers!

Accedi per commentare.

Prodotti


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by