Optimizing a parametrized geometry with genetic algorithm

Hello,
My current working state is as follows: I build the geometry in Matlab, export it to Comsol where the FE-Calculation takes place and afterwards I can retrieve the results such as reaction force in Matlab.
My aim is to optimize the geometry in order to get the maximum reaction force. Therefore I want the genetic algorithm to vary the geometric parameters, here for example A. In total there are up to ten, but I'm trying it with one first. If I write
Fmax = @(A)FE_Calculation;
A = optimvar("A","LowerBound",1,"UpperBound",1.5);
I don't succeed in plotting
T0=0.75;
m=472.5;
s=linspace(0,m,m+1);
y2= A .*rem(s/70,T0)./T0+ s/8;
figure(1);
plot(s,y2);
since A is continuous (Error message: "Data must be numeric, datetime, duration or an array convertible to double.") Unfortunately, I need this plot to generate my geometry.
Does anybody have a solution or an idea how to approach this?
I would be very grateful for your help.

2 Comments

I don't succeed in plotting ...since A is continuous
No, A is not continuous. A does not possess value(s) at all!
Ok, I printed A at the command window and got
A=
OptimizationVariable with properties:
Name: 'A'
Type: 'continuous'
IndexNames: {{} {}}
LowerBound: 1
UpperBound: 1.5000
So I thought it would be 'continuous' but if it just discribes the distribution and A doesn't contain any values, it explains why the problem occures. There has to be a point somewhere in the algorithm, where they need actual values for the calculation. Or does this just happen in the final step of "solve"?

Sign in to comment.

Answers (1)

Whn generating y2, your current code attempt doesn't make it clear what values you intend for "A". Perhaps this is what you meant,
y2= linspace(1,1.5,m+1) .*rem(s/70,T0)./T0+ s/8;

1 Comment

If I change A, the form of the curve will change and so will my geometry. I just took the range of values for A between 1 and 1.5 as an example. I attached two pictures withe the influence of A on the geometry. You can see one with A=0.75 and one with A=3. So it's important for me to be able to integrate it in my optimization loop.

Sign in to comment.

Products

Release

R2022a

Asked:

Kim
on 24 Aug 2022

Edited:

Kim
on 24 Aug 2022

Community Treasure Hunt

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

Start Hunting!