Discrete Design Variables in Topology Optimization

Karshenas Reza
Karshenas Reza Altair Community Member
edited July 2023 in Community Q&A

hie vereryone, 

Does anyone have any idea what exactly the discrete design variable option is in a topology optimization? I read the explanations in the help, but I didn't understand it. What are " full discrete ", " two-phase approach " and " continuous optimization regardless of DDVAL definitions "? 

Best Answer

  • PaulAltair
    PaulAltair
    Altair Employee
    edited July 2023 Answer ✓

    DDVOPT, which is what you are referring to, is more usually used in size/gauge optimization than topology optimisation and is used to control/set the optimisation approach where a 'DDVAL' for discrete, or defined values is used for a design variable.

    I will describe a use case that should clarify the approaches.

    Imagine you have a structure made of 3 pressed steel parts, and you are performing a gauge optimisation, e.g. optimising mass vs a displacement target.

    Normally, the gauge of the parts would be free to vary within the bounds you set, so, e.g. you might say the panels must be between 0.8mm and 2.4mm thick.

    Optistruct, with no other constraint, may give you 3 gauges of e.g. 0.912mm 1.234mm and 2.011mm

    Now, these may be the 'optimum' values, but they are not much use to you, if you can only buy steel sheet from your supplier at gauges of 0.8mm - 2.4mm in 0.2mm gauge intervals.

    This is where DDVAL comes in, rather than being 'free' the gauge variable for your parts can reference a DDVAL that limits the final gauge proposed by Optistruct to be (0.8,1.0,1.2,1.4,1.6,1.8,2.0,2.2,2.4)mm

    Having set a DDVAL as above, the parameter DDVOPT controls how the optimisation proceeds with those variables:

    With the default, 'full discrete' approach, at every iteration of your optimisation, your design variable will be at one of the discrete values defined, the value may only change to one of the other values defined.

    This can often give a poor result in a gradient based optimisation, as it can create a low resolution of sensitivity, and the code cannot find a good optimum converged solution. In some circumstance the step to the 'next' value may even be close to or in excess of the move limit per iteration, meaning you are stuck.

    The 'two-phase' approach, means that, initially, during the optimisation, Optistruct optimises the gauge 'normally' without consideration of the DDVAL discrete values, and only after that, does it continue on to try to converge on one of the discrete values set. So, in practice, with this approach, it would end up at the 0.912, 0.1234, 2.011 values again, and then try to get to a converged solution at your requested discrete values (e.g. 1.0, 1.2, 2.0)

    The final option 'continuous, regardless...' is just effectively asking the optimisation to 'ignore' the DDVAL you defined, the solution would proceed as though the DDVAL did not exist on the variable, even if one is defined, it may be useful, e.g. when you are trying to assess a model sensitivity, and are setting up your DDVALs, by setting this option, you can retain your DDVAL in the model rather than having to delete it to get back to a 'continuous' result.

    Hope this helps.

Answers

  • PaulAltair
    PaulAltair
    Altair Employee
    edited July 2023 Answer ✓

    DDVOPT, which is what you are referring to, is more usually used in size/gauge optimization than topology optimisation and is used to control/set the optimisation approach where a 'DDVAL' for discrete, or defined values is used for a design variable.

    I will describe a use case that should clarify the approaches.

    Imagine you have a structure made of 3 pressed steel parts, and you are performing a gauge optimisation, e.g. optimising mass vs a displacement target.

    Normally, the gauge of the parts would be free to vary within the bounds you set, so, e.g. you might say the panels must be between 0.8mm and 2.4mm thick.

    Optistruct, with no other constraint, may give you 3 gauges of e.g. 0.912mm 1.234mm and 2.011mm

    Now, these may be the 'optimum' values, but they are not much use to you, if you can only buy steel sheet from your supplier at gauges of 0.8mm - 2.4mm in 0.2mm gauge intervals.

    This is where DDVAL comes in, rather than being 'free' the gauge variable for your parts can reference a DDVAL that limits the final gauge proposed by Optistruct to be (0.8,1.0,1.2,1.4,1.6,1.8,2.0,2.2,2.4)mm

    Having set a DDVAL as above, the parameter DDVOPT controls how the optimisation proceeds with those variables:

    With the default, 'full discrete' approach, at every iteration of your optimisation, your design variable will be at one of the discrete values defined, the value may only change to one of the other values defined.

    This can often give a poor result in a gradient based optimisation, as it can create a low resolution of sensitivity, and the code cannot find a good optimum converged solution. In some circumstance the step to the 'next' value may even be close to or in excess of the move limit per iteration, meaning you are stuck.

    The 'two-phase' approach, means that, initially, during the optimisation, Optistruct optimises the gauge 'normally' without consideration of the DDVAL discrete values, and only after that, does it continue on to try to converge on one of the discrete values set. So, in practice, with this approach, it would end up at the 0.912, 0.1234, 2.011 values again, and then try to get to a converged solution at your requested discrete values (e.g. 1.0, 1.2, 2.0)

    The final option 'continuous, regardless...' is just effectively asking the optimisation to 'ignore' the DDVAL you defined, the solution would proceed as though the DDVAL did not exist on the variable, even if one is defined, it may be useful, e.g. when you are trying to assess a model sensitivity, and are setting up your DDVALs, by setting this option, you can retain your DDVAL in the model rather than having to delete it to get back to a 'continuous' result.

    Hope this helps.

  • Karshenas Reza
    Karshenas Reza Altair Community Member
    edited July 2023

    greate, thanks a lot