Can create multiple objectives in optimization
Answers
-
You cannot create multiple objectives for the optimization in OptiStruct. However there are ways to formulate same problem by having single objective, but adding constraints on other responses.
Example: instead of minimizing both mass and stress, you can min mass and add constraint on stress.
With this you should be all set. But if you strictly want to solve multi objective problems, study Pareto plot, relations between responses, etc. you can use Altair HyperStudy.
0 -
Like mentioned by Viraj, OS accepts only 1 objective function for optimization, so in the end, OS will necessarily chase after a single value.
But there are a few approaches that one can use in order to combine more than one response in the Objective Function:
1) create an advanced response (DRESP2 or DRESP3), combining 2 or more simple responses (DRESP1s) into a more complex response, by using an equation. DRESP2 is embed into OS, and needs an equation (DEQTN).
Just a simple example, you can create your objective as the AVERAGE of the displacement of 2 different nodes.
You can create 2 responses, being DISP(nodeA) and DISP(nodeB). Then create another response of type 'function' (DRESP2) and assign it to a simple equation (DEQTN) >> f(x,)=(x+y)/2. Inside the DRESP2 you could assign what are 'x' and 'y'. In this example 'x' is DISP(nodeA) and 'y' is DISP(nodeB). Then, in the end, the DRESP2 will be your objective.
You may also work with more complex equations/formulas, using DRESP3, and combining your Optimization to use Fotran, C, Excel or Compose as math engines for your responses. This enables you to combine your DRESP1 responses in a much more complex manner, as needed.
2) Instead of combining the responses using equations, one can also use a different apporach such as MINMAX (or MAXMIN) formulation. This essentially combines multiples responses, by using a discrete approach.
Let's ay you want to minimize both displacements and stresses in a particular region. In order to do that, you can create 2 responses (DISP and STRESS) and assign them to an Objective Reference, and for each response type you define a positive and negative reference, which is essentially a normalizing scalar. i.e: displacement_value/reference_value. stress_value/ref_stress_value.
The idea of these is to get all different responses normalized to the same order of magnitude.
Then as your objective, you can select MINMAX (ObjRef).
This will first extract the MAX normalized value, comparting both stress and displacements. Then after the MAX of them is found, the solver will chase after this, and try to minimize it.
Then it will follow thruough the iterations, always chasing after the max of the normalized values.
1