Welded Beam Goal Programming

Welded Beam Goal Programming

A beam has to be welded with another and must carry a load F. The major goals include the cost of the beam is at most 5 units and the end deflection of the beam is at most 0.001 inch. The design parameters considered are thickness of the beam, b, width of the beam, t, length of the weld, l, and weld thickness, h. The design constraints are given by:

Mathematical Formulation:

Subjected to:

clc; 
// Objective functions
function f=ObjectiveFunction(X)
    f(1) = (1.10471*X(1)^2*X(2) + 0.04811*X(3)*X(4)*(14+X(2)));
    f(2) = (2.1952/((X(3)^3)*X(4)));
endfunction
// Non linear constraints
function [C, Ceq]=NLconstraints(X)
    P = 6000; L = 14; E = 3*10^7; G = 12*10^6; tauMax = 13600; sigmaMax = 30000; 

    M = P*(L+(X(2)/2));
    R = sqrt((X(2)^2/4) + ((X(1) + X(3))/2)^2);
    J = 2*0.7071068*X(1)*X(2)*((X(2)^2/12)+((X(1)+X(3))/2)^2);
    sigma = (6*P*L)/(X(3)^2*X(4));
    Pc1 = (4.013*(sqrt(E*G*(X(3)^2*X(4)^6)/36)))/(L^2);
    Pc2 = 1-(X(3)/(2*L))*sqrt(E/(4*G));
    Pc = Pc1*Pc2;
    tauPrime = P/(sqrt(2)*X(1)*X(2));
    tauDprime = (M*R)/J;
    tau = sqrt(tauPrime^2 + 2*tauPrime*tauDprime*(X(2)/(2*R))+tauDprime^2);

    C(1) = tau - tauMax;
    C(2) = sigma - sigmaMax;
    C(3) = P - Pc;
    C = C';
    Ceq = [];
endfunction
// Linear inequality constraints
A = [1 0 0 -1];
b = 0;

nObj = 2;

Aeq = []; beq = [];
lb = [0.125 0.1 0.1 0.125];
ub = [5 10 10 5];
nVar = length(lb);

// Initial guess to the solver
x0 = lb + rand(1,nVar).*(ub-lb);

//Specifying the goal and the weights
goal=[5 0.001];
weight = [0.75 0.25];

options = list("MaxIter",10000,"CpuTime",10000)
// Calling fgoalattain
[x,fval,attainfactor,exitflag,output,lambda]=fgoalattain(ObjectiveFunction,x0,goal,weight,A,b,Aeq,beq,lb,ub,NLconstraints,options)

// Result representation

if exitflag == 0 then
    disp("Optimal Solution Found")
    disp(x0,"Initial guess given to the solver")
    disp(x',"The optimum solution obtained")
    disp(fval',"The optimum value of the objective functions")
elseif exitflag == 1 then
    disp(" Maximum Number of Iterations Exceeded. Output may not be optimal")
else
    disp("Error encountered")
end

Expected Output:

Maximum Number of Iterations Exceeded. Output may not be optimal.
 
 
 The solution obtained   
 
    0.5983    5.0649    3.2989    1.5442  
 
 The value of the objective functions   
 
    6.6752    0.0396