How can i formulate a multi objective multi variable optimization problem?

29 ビュー (過去 30 日間)
Esteban Caballero
Esteban Caballero 2018 年 11 月 24 日
編集済み: Esteban Caballero 2018 年 11 月 26 日
I'm trying to formulate a multi objective and multi variable problem, but i'm new to matlab and i don't know how i can solve it. I have been able to solve it for a single objective, using optimpro and declaring each variable and restriction, but i don't know how i can formulate it with (as in, which option, which object type, etc...)
I'm replicating the model exposed in this paper: https://doi.org/10.1016/j.apm.2011.10.007
I see the solvers and examples use one variable to solve the problem (when the function is declared, it depends on one variable only, say, X(1) and X(2)). I know how to formulate the model with each variable, i have a test model in which i already solved the problem for each objective, but i don't know how to solve it for both objectives at the same time as i don't know how to formulate it for matlab. This is the whole code i did https://pastebin.com/mUNY6aW3 (ignore my comments and my poor naming sense). As you can see, i have all the data and structure i need, and the model does solve the problem for each objective one at a time.
I mean, i assume i can somehow create an object with an extra dimension to save each variable, something akin to A(:,:,1)=q, A(:,:,2)=v and so on, but i don't know how to acomplish that. Another idea i had is that instead of converting them, i just replace it on the model (instead of writing u, writing X(1), instead of writing q, X(2) or something like that). These ideas respond to the assupmtion i have that to declare a function, i need to do them depending on one variable. I think maybe i can create the expresión for each objective and then do a function like fun=[f1,f2]. I tried playing with these ideas, but i they didn't work (i think i need to set an option for any of them to work, maybe say that the objective function is a series of matrixes or declare that i'm using a multi objective model or something). I know the way i have formualted my problem enables me to extract the inequalities and objective functions, should i need to use the coefficients as constants instead of the many matrixes i have.
I tried to emulate the documentation on multi objective models with my previous ideas, but i got errors because of object types or insufficient arguments, due to my inexperiende and lack of knowledge of matlab. The code i did was based in my knowledge of optimization and a bit of reading of the documentation provided. I have already read the documentation on multi objective optimization, problem based and solver based optimization, but i couldn't find there a way to formulate the problem. So, i'm saying, you can point me to material to read, or give me an example and i'll try my best to understand it and then ask a more specific question.
Lastly, pardon any issues with my grammar, it has been a while since i last wrote in english. Thanks in advance.

回答 (1 件)

Alan Weiss
Alan Weiss 2018 年 11 月 26 日
I suggest that you look at the Design Optimization of a Welded Beam example or other examples in the Multiobjective Optimization section of Global Optimization Toolbox.
Alan Weiss
MATLAB mathematical toolbox documentation
  2 件のコメント
Esteban Caballero
Esteban Caballero 2018 年 11 月 26 日
Alan, thanks for your response.
I already checked them (the issue about the variables needing to be only one variable is based on what i read on the examples, actually), but tit doesn't directly adress my issue: the variables used, as far as i tell, take a vector as solution and are indexed as a matrix. I tried changing my varables to one, using them as X(:,:,:,1), X(:,:,:,2) and so on, but i got error using the solver. I think the error is based in that the coefficients are being multiplied with the X and they don't match the size, since it's my understanding that matlab will take the size of X to be the biggest one and fill them with zeroes, so i'll try declaring the coefficents as bigger matrix filled with zeroes and just filling the spaces i do have.
My issue is that my variables are 4 positive continuos ones and 2 binary ones, and in the case of the continuos ones they depend on at least 2 dimensions, which is something i don't see done on the examples. My final model will have varables with 3 dimensions, which is even worse. What i don't know how to do is how to declare the variables so that they are saved on a single one, as matlab needs for the solvers to work. I think my main issue is that i'm used to a different logic/code and i'm getting confused thinking in my old ways.
After reading a bit more, based on my ideas, i found the inline and cat commands, i'll test if they solve my issue tomorrow. Thank you again for your time
Alan Weiss
Alan Weiss 2018 年 11 月 26 日
Oh, I didn't understand that you have some binary variables. I think that you will have to treat them as completely separate, just taking the four cases into account. There is no built-in functionality for treating a multiobjective problem that has discrete variables.
As for turning your variables from an array into a vector, that is done by linear indexing, and to go from the linear index to the array you can use reshape.
Alan Weiss
MATLAB mathematical toolbox documentation

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by