[770c98]: / Application / Examples / BikeSpring / Model / anyoptcircle.m

Download this file

44 lines (38 with data), 1.6 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
function B = anyopt
% Unconstrained optimization in the AnyBody Modeling System
% using a golden section method with circular directions
% along parameter axes
% Design variables as they appear in the AnyScript model
% AnyVar L0 = 0.24; //Spring slack length
% AnyVar F1 = 100; //Spring force at 50% strain
% AnyVar SpringRad = 0.15; //Radius of spring attachment on the crank
% AnyVar SpringAngle = 45; //Angle of spring attachment points on the crank
% AnyVar SpringX = -0.10; //X coordinate of spring attachment on frame
% AnyVar SpringY = 0.30
% Initialize
% L0 F1 SpringRad SpringAngle SpringY
xmin = [0.05 0.0 0.01 0.0 0.1]; % Lower bound
x = [0.1009 0.0 0.1104 61.65 0.1012]; % Initial guess
%x = [0.0112 175.3446 0.1116 64.0230 0.1012]; Optimized
xmax = [0.4 1000.0 0.40 180.0 0.5]; % Upper bound
% do optimization
maxiter = 10;
evals = 0; % Counter of function evaluations
delta = 0.1; % Relative perturbation
gradindex = 1; % Index of variable to minimize along
while evals<maxiter*length(x)
for j=1:length(x)
d(j) = 0.0;
end
d(gradindex) = 1;
[x F] = golden(xmin,x,xmax,d,10) % Perform golden section optimization in that direction
if gradindex==length(x)
gradindex=1;
[evals F]
pause;
else
gradindex = gradindex + 1;
end
evals = evals + 1;
end
F