Jump to content
Mr. hjkl 3ff

Constant volume kept during DAKOTA-Optimization

Recommended Posts

Hello :)

 

I want to optimize a underwater body with defined volume to minimize drag. Therefore we want to input our body (more than 10 parameters) in a DAKOTA search engine.

After definment of an equality constraint and running the optimization I got no matching designs that fit to this given volume.

 

To compare those volumes I added a parameter "isVolume" with <BRep>.getVolume() as a value. Than another parameter "destVolume" is put together with "isVolume" in the equality constraint.

 

So my problem is basically to get the DAKOTA-algorythm to work with this definition of constant volume.

 

 

 

Thank you,

Felix

Share this post


Link to post
Share on other sites

Our attemp was to create 300 random geometries via DAKOTA Sensitive Analysis without evaluating drag reduction, but the deviation to the equality constraint.

Neither the use of the result pool, nor the pre-processor functions in the Global Optimization after had any influence on the results.

It's still generating not-matching geometries.

Share this post


Link to post
Share on other sites

It's about a SWATH-Body. Momentary it's just the displacement that is given as constraint. Better would be to define a displacement distribution.

And those primary definments I want to put in the DAKOTA that is reducing drag.

Share this post


Link to post
Share on other sites

Hi Felix,

 

the way I usually handle this kind of problem is via a nested optimization (usually a Brent algorithm works fine).

 

The idea is, that whatever you want to vary within you parametric geometry, there should be a design variable that 'counteracts' the change in displacement to keep the displacement of the model constant for each variant. This could simply be the draft that gets adjusted to ensure that the displacement is the same for each variant, but it could also be some kind of fullness, the mid ship length, etc. (even a combination of different parameters can be used...)

 

The way to set up the nested optimization is as follows:

 

Set up your design variable (the one that will counteract all other changes in geometry to keep the volume constant)

 

Set up a parameter that defines the quadratic error: error=(targetDisplacment - currentDisplacement)^2

 

Set up a Brent that uses the design variable as an input and the error as objective

 

Set variant creation to false (this will internally run the optimization without creating each variant)

 

Set keep up to date to true (this will trigger the Brent whenever the geometry changes so that the displacement is always at target)

 

I attached a simple example for you to better understand the procedure.

 

Kind regards,

Heinrich

constantDPLtestcase.fdb

  • Upvote 1
  • Downvote 1

Share this post


Link to post
Share on other sites

Hello :)

 

I want to optimize a underwater body with defined volume to minimize drag. Therefore we want to input our body (more than 10 parameters) in a DAKOTA search engine.

After definment of an equality constraint and running the optimization I got no matching designs that fit to this given volume.

 

To compare those volumes I added a parameter "isVolume" with <BRep>.getVolume() as a value. Than another parameter "destVolume" is put together with "isVolume" in the equality constraint.

 

So my problem is basically to get the DAKOTA-algorythm to work with this definition of constant volume.

 

 

 

Thank you,

Felix

Hi Mr. hjkl 3ff

 

I encountered problem that very similarly to you. I get different underwater-glider-bodies (with different parameters) using DAKOTA-algorithm, then i acquire drag/lift coefficient in openfoam. 

But i do not know how to get those parameters with constant volume.

 

Can you help me to solve this problem? Or, do you have any ideas?

 

Thank you very much.

Xuxiang 

Share this post


Link to post
Share on other sites

Dear Mr. Xuxiang,

 

I will answer your message here to keep this thread alive...

From what I understand you are not using CAESES for you geometry generation so far. Maybe you are enrolled in a university currently? This way you could get a free trial license and take a closer look at CAESES and how to use it's optimization tools in the process of geometry generation.

The basic idea is as follows:

Say you have a set of design variables which you want to vary while keeping the volume constant. You then choose one of the variables to not be changed freely, but to be adjusted always such, that your volume constraint is matched.

 

The next step would then be to connect CAESES and OpenFOAM to run an optimization to minimize drag/lift ratio. Any variant generated during this optimization will automatically match your specified displacement.

 

Note, that there is actually a tutorial on the connection with OpenFOAM that comes with CAESES so this task should be pretty straight forward...

 

Best regards,

Heinrich

Share this post


Link to post
Share on other sites
Hi Mr. Heinrich

 

Thank you very much for your reply, your answer is very helpful to me.

 

I did this series of work on a computer cluster.

 

I use 3d modeling software (such as FreeCAD, openSCAD) to control a series of parameter variables to obtain the geometric model. Then, I used DAKOTA and OpenFOAM to carry out subsequent optimization and numerical simulation tasks.

 

I know CAESES is a very excellent optimized design software. I wonder if it will work on Linux based on the command line. Because we plan to build an optimized simulation service platform with some open source software.

 

 

The DAKOTA and OpenFOAM coupling process is:

 

1. The DAKOTA internal optimization algorithm gives a set of variables according to the range of parameter variables provided;

 

2. Parametric modeling by modeling software;

 

3. OpenFOAM numerical simulation to obtain the lift/drag ratio;

 

4. All geometric models and their mechanical properties can be obtained.

 

 

Now, I want to add the fixed volume constraint of the geometric model to processes 1 through 3. There are probably two ways to do this:

 

1. In process 2, the volume of the geometric model is obtained through the volume command tool in the 3d software. if the volume satisfies the condition, then process 3; if the condition is not met, then other variables in the variable set are selected for modeling again;

 

2. Create a mathematical expression that can solve the volume of any geometric model (perhaps by code) and put it in Process 1, and all the geometric models we get will satisfy the volume constraint.

 

Note that all variables in this process are generated by DAKOTA.

 

Now, I don't know if my idea is feasible. Do you have any suggestions for this?

 

Best regards,

Xuxiang

 

Share this post


Link to post
Share on other sites

Hi Xuxiang,

 

Your workflow sounds pretty interesting. From what I can quickly estimate, I guess both options for handling the volume constraints are possible (e.g. with CAESES). And CAESES also works on Linux platforms, either with GUI or without (command-driven in batch mode).

 

Hope this helps,
Jörg

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...