% Boyd & Vandenberghe "Convex Optimization" % (a figure is generated) % Almir Mutapcic 02/08/06 % % We have a segmented cantilever beam with N segments. Each segment % has a unit length and variable width and height (rectangular profile). % The goal is minimize the total volume of the beam, over all segment % widths w_i and heights h_i, subject to constraints on aspect ratios, % maximum allowable stress in the material, vertical deflection y, etc. % % The problem can be posed as a geometric program (posynomial form) % minimize sum( w_i* h_i) % s.t. w_min <= w_i <= w_max, for all i = 1,...,N % h_min <= h_i <= h_max % S_min <= h_i/w_i <= S_max % 6*i*F/(w_i*h_i^2) <= sigma_max % y_1 <= y_max % % with variables w_i and h_i (i = 1,...,N). % For other definitions consult the book. % (See exercise 4.31 for a non-recursive formulation.) % optimization variables N = 8; % constants wmin = .1; wmax = 100; hmin = .1; hmax = 6; Smin = 1/5; Smax = 5; sigma_max = 1; ymax = 10; E = 1; F = 1; cvx_begin gp % optimization variables variables w(N) h(N) % setting up variables relations % (recursive formulation) v = cvx( zeros(N+1,1) ); y = cvx( zeros(N+1,1) ); for i = N:-1:1 fprintf(1,'Building recursive relations for index: %d\n',i); v(i) = 12*(i-1/2)*F/(E*w(i)*h(i)^3) + v(i+1); y(i) = 6*(i-1/3)*F/(E*w(i)*h(i)^3) + v(i+1) + y(i+1); end % objective is the total volume of the beam % obj = sum of (widths*heights*lengths) over each section % (recall that the length of each segment is set to be 1) minimize( w'*h ) subject to % constraint set wmin <= w <= wmax; hmin <= h <= hmax; Smin <= h./w <= Smax; 6*F*[1:N]'./(w.*(h.^2)) <= sigma_max; y(1) <= ymax; cvx_end % display results disp('The optimal widths and heights are: '); w, h fprintf(1,'The optimal minimum volume of the beam is %3.4f.\n', sum(w.*h)) % plot the 3D model of the optimal cantilever beam figure, clf cantilever_beam_plot([h; w])

Building recursive relations for index: 8 Building recursive relations for index: 7 Building recursive relations for index: 6 Building recursive relations for index: 5 Building recursive relations for index: 4 Building recursive relations for index: 3 Building recursive relations for index: 2 Building recursive relations for index: 1 Successive approximation method to be employed. For improved efficiency, SeDuMi is solving the dual problem. SeDuMi will be called several times to refine the solution. Original size: 126 variables, 39 equality constraints 23 exponentials add 184 variables, 115 equality constraints ----------------------------------------------------------------- Cones | Errors | Mov/Act | Centering Exp cone Poly cone | Status --------+---------------------------------+--------- 23/ 23 | 6.487e+00 2.207e+00 0.000e+00 | Solved 23/ 23 | 1.520e+00 1.942e-01 2.724e-07 | Solved 23/ 23 | 1.644e-01 2.074e-03 5.029e-08 | Solved 22/ 23 | 8.370e-03 5.600e-06 4.432e-08 | Solved 9/ 23 | 5.035e-04 5.092e-08 4.441e-08 | Solved 0/ 23 | 1.039e-04 4.409e-08 4.400e-08 | Solved ----------------------------------------------------------------- Status: Solved Optimal value (cvx_optval): +42.3965 The optimal widths and heights are: w = 0.6214 0.7830 0.9060 1.0124 1.1004 1.1762 1.2000 1.3333 h = 3.1072 3.9149 4.5299 5.0621 5.5019 5.8810 6.0000 6.0000 The optimal minimum volume of the beam is 42.3965.