Constraints for groups of design variables
Hello,
I'm searching for an easy way to implement the following constraint for a group of design variables in an optimization study within the Hyperstudy interface.
Let's assume we have the variables A, B, and C wich should be varied within the following ranges:
A: Lower Bound: 0, Upper Bound: 1, Initial Value: 0.33
B: Lower Bound: 0, Upper Bound: 1, Initial Value: 0.33
C: Lower Bound: 0, Upper Bound: 1, Initial Value: 0.33
Whereas the general constraint A+B+C<=1 musn't be violated.
My approach using the function 'Link Variables' did not lead to an appropriate result.
I would like to avoid a redefinition of the parameters within the solver input file (i.e. by A = A/(A+B+C), in consideration of the explicit assignment between the parameters defined by Hyperstudy and the 'real' parameters used within the solver.
Does anybody know of an convenient way to implement the constraints as described?
Thank you for your efforts in advance.
Cheers,
Felix
Answers
-
HST is structured so that all the unlinked design variables are truly independent, so there is no direct way to enforce an a prior constraint like this in HST today.Try adding constraints on dvs (by passing them as responses).But That would still result in wasted runs.This comment is for Linking DVs.
We don’t have any setup today that allows to enforce this type of condition. Our setup is dependent on their being indpenendent variables.
For example, consider a condition that x + y < 10.
X = normal DV in range [0,10]
Z = dummy variable in range [0,1]
Y = (10-x)*z
See the attached scatter plot from a HST of a Hammersley DOE of this space, you can see the shape of the space matches your required space. This setup has some less than ideal characteristics when you do optimization because the variables are not independent. The optimization will still work, but the convergence may take longer. I attached an example archive of this setup for your review.
Another option, which you pointed out below is to just the optimizer and tell it ignore failed runs. You mentioned this below, and rightly pointed out that GRSM will not use the maximum number of runs. But this is easily worked around by just increasing the number of runs. Set it high (1000) and just kill it when you are satisfied with its number of runs.
I hope one of these two suggestions helps,
0 -
Hello Rahul,
I forgot mentioning that i am of course using a GRSM since we have to expect several local minima.
Thank you for alluding to this implication.
Your approach using dummy variables helped to increase the efficiency of the optimization, although it is not exactly what i was hoping to find.
Cheers,
Felix
0 -
Hi Rahul,
I have a variable (var_21) linked to multiple variables (B, C, D). Variables B,C & D are independent and Optimizer will vary them.
But I need to give a constraint to variable var_21. I tried adding Constraints in the 'Define Input Variables' section, But HS is throwing an error saying
'581 Error : Failed evaluating ( var_21 ) which is the ( Left Expression ) of the constraint ( con_1 ) the error was: ( Use of linked variable ( var_21 ) is invalid in a constraint expression. )'
Can you suggest me some ways to do this?
Thanks in Advance
Sri
0