function [result] = opt_intensity(input)
%INTENSITY 此处显示有关此函数的摘要
%用于遗传算法优化时的约束条件,即正应力和切应力小于许用应力
%--------------------------------------------------------------------------
% (0) 输入参数
%--------------------------------------------------------------------------
% for i=1:8
% input(i)=0.5;
% end
No_el=25; % 杆数
No_dof=3; % 节点矩阵长度
No_node=10; % 总节点数
Sys_dof=No_node*No_dof; % 整体矩阵长度
E=10000;
b=[40 0.35];
L=100;
gcoord(1,:)=[-37.5,0,2*L];
gcoord(2,:)=[37.5,0,2*L];
gcoord(3,:)=[-37.5,37.5,L];
gcoord(4,:)=[37.5,37.5,L];
gcoord(5,:)=[37.5,-37.5,L];
gcoord(6,:)=[-37.5,-37.5,L];
gcoord(7,:)=[-L,L,0];
gcoord(8,:)=[L,L,0];
gcoord(9,:)=[L,-L,0];
gcoord(10,:)=[-L,-L,0];
%截面尺寸
for i=1:8
A(i)=input(i);
end
%--------------------------------------------------------------------------
% (0.4) 连接节点形成杆件
%--------------------------------------------------------------------------
nodes=zeros(No_el,3);
nodes(1,:)=[1,2,1];
nodes(2,:)=[1,4,2];
nodes(3,:)=[2,3,2];
nodes(4,:)=[1,5,2];
nodes(5,:)=[2,6,2];
nodes(6,:)=[2,4,3];
nodes(7,:)=[2,5,3];
nodes(8,:)=[1,3,3];
nodes(9,:)=[1,6,3];
nodes(10,:)=[3,6,4];
nodes(11,:)=[4,5,4];
nodes(12,:)=[3,4,5];
nodes(13,:)=[5,6,5];
nodes(14,:)=[3,10,6];
nodes(15,:)=[6,7,6];
nodes(16,:)=[4,9,6];
nodes(17,:)=[5,8,6];
nodes(18,:)=[4,7,7];
nodes(19,:)=[3,8,7];
nodes(20,:)=[5,10,7];
nodes(21,:)=[6,9,7];
nodes(22,:)=[6,10,8];
nodes(23,:)=[3,7,8];
nodes(24,:)=[4,8,8];
nodes(25,:)=[5,9,8];
%--------------------------------------------------------------------------
% (0.5) 施加载荷
%--------------------------------------------------------------------------
% a load applied at node 7 in -y direction
P=[1,1,1;
-10,1,2;
-10,1,3;
-10,2,2;
-10,2,3;
0.5,3,1;
0.6,6,1];
%--------------------------------------------------------------------------
% (0.6) boundary conditions
%--------------------------------------------------------------------------
ConNode=[ 7, 1, 1, 1; % code for constrained nodes
8, 1, 1, 1;
9, 1, 1, 1;
10, 1, 1, 1];
ConVal =[ 7, 0, 0, 0; % code for constrained nodes
8, 0, 0, 0;
9, 0, 0, 0;
10, 0, 0, 0];
% (1) 初始化
%--------------------------------------------------------------------------
kk=zeros(Sys_dof,Sys_dof);
ff=zeros(Sys_dof,1);
bcdof=zeros(Sys_dof,1);
bcval=zeros(Sys_dof,1);
u=zeros(2*No_dof,1);
stress=zeros(No_el,1);
%--------------------------------------------------------------------------
% (2) 计算约束
%--------------------------------------------------------------------------
[n1,n2]=size(ConNode);
for ni=1:n1
ki=ConNode(ni,1);
bcdof((ki-1)*No_dof+1:ki*No_dof)=ConNode(ni,2:No_dof+1);
bcval((ki-1)*No_dof+1:ki*No_dof)=ConVal(ni,2:No_dof+1);
end
%--------------------------------------------------------------------------
% (4) 计算并组装刚度矩阵
%--------------------------------------------------------------------------
for i=1:No_el
nd(1)=nodes(i,1);
nd(2)=nodes(i,2);
nd(3)=nodes(i,3);
x(1)=gcoord(nd(1),1); y(1)=gcoord(nd(1),2);z(1)=gcoord(nd(1),3);
x(2)=gcoord(nd(2),1); y(2)=gcoord(nd(2),2);z(2)=gcoord(nd(2),3);
k = bar3D2node_stiffness(E,A(nd(3)),x(1),y(1),z(1),x(2),y(2),z(2));
index=femEldof(nd,2,No_dof);
kk=femAssemble1(kk,k,index);
% ff(No_dof*(nd(1)-1)+2)=ff(No_dof*(nd(1)-1)+2)-md*A(i)*L/2; %自重
% ff(No_dof*(nd(2)-1)+2)=ff(No_dof*(nd(2)-1)+2)-md*A(i)*L/2;
end
%--------------------------------------------------------------------------
% (3) 加载载荷
%--------------------------------------------------------------------------
[n1,n2]=size(P); %n1为集中力载荷数量
for ni=1:n1
ff(No_dof*(P(ni,2)-1)+P(ni,3))=P(ni,1);
end
%--------------------------------------------------------------------------
% (5) 应用约束求解矩阵方程
% --------------------------------------------------------------------------
[kk0,ff0,bcdof0,bcval0,sdof0]=kkCheck1(kk,ff,bcdof,bcval);
[kk1,ff1,sdof1]=femApplybc1(kk0,ff0,bcdof0,bcval0);
displmt=kk1\ff1;
% % No_dof1=No_dof/(Sys_dof/sdof1);
% --------------------------------------------------------------------------
% (4) 计算每个杆件受力
% --------------------------------------------------------------------------
for i=[1:No_el]
nd(1)=nodes(i,1);
nd(2)=nodes(i,2);
nd(3)=nodes(i,3);
x(1)=gcoord(nd(1),1); y(1)=gcoord(nd(1),2);z(1)=gcoord(nd(1),3);
x(2)=gcoord(nd(2),1); y(2)=gcoord(nd(2),2);z(2)=gcoord(nd(2),3);
u(1:3)=displmt(3*(nd(1)-1)+1:3*nd(1));
u(4:6)=displmt(3*(nd(2)-1)+1:3*nd(2));
stress(i) = bar3D2node_stress( E,x(1),y(1),z(1),x(2),y(2),z(2),u);
end
result(1)=max(abs(stress))-b(1);
result(2)=max(abs(displmt))-b(2);
% % --------------------------------------------------------------------------
% % (4) g2
% % --------------------------------------------------------------------------
% link=zeros(6,5);
% nod=zeros(6,1);
% for i=1:No_node
% k=1;
% for j=1:No_el
% if nodes(j,1)==i||nodes(j,2)==i
% link(i,k)=j;
% k=k+1;
% end
% end
% end
% for i=1:No_node
% k=nnz(link(i,:));
% for j=1:k
% if input(link(i,j))~=0.1
% nod(i)=1;
% end
% end
% end
% nj=nnz(nod);
% input1=input-0.1;
% ne=nnz(input1);
% r=4;
% result(3)=2*nj-ne-r;
% result(4)=det(kk);
% %--------------------------------------------------------------------------
% % (4) 画图
% %--------------------------------------------------------------------------
% for iel=1:No_el % loop for the total number of elements
% nd(1)=nodes(iel,1); % 1st connected node for the iel-th element
% nd(2)=nodes(iel,2); % 2nd connected node for the iel-th element
% nd(3)=nodes(iel,3); % 2nd connected node for the iel-th element
% x(1)=gcoord(nd(1),1); y(1)=gcoord(nd(1),2);z(1)=gcoord(nd(1),3);
% x(2)=gcoord(nd(2),1); y(2)=gcoord(nd(2),2);z(2)=gcoord(nd(2),3);
% figure(1)
% plot3(x,y,z,'b'), title('Deflection of the structure'), hold on;
% end
%
% for i=1:No_node
% for j=1:3
% displmtnode(i,j)=displmt((i-1)*3+j,1);
% end
% end
% gcoordA=gcoord+10*displmtnode(:,1:3);
% for iel=1:No_el % loop for the total number of elements
% nd(1)=nodes(iel,1); % 1st connected node for the iel-th element
% nd(2)=nodes(iel,2); % 2nd connected node for the iel-th element
% x(1)=gcoordA(nd(1),1); y(1)=gcoordA(nd(1),2);z(1)=gcoordA(nd(1),3);
% x(2)=gcoordA(nd(2),1); y(2)=gcoordA(nd(2),2);z(2)=gcoordA(nd(2),3);
% figure(1)
% plot3(x,y,z,'r'), title('Deflection of the structure'), hold on;
% end
% hold off
end
PSO_25.rar_25 杆桁架_PSO_pso杆桁架_桁架_桁架优化算法
版权申诉
5星 · 超过95%的资源 126 浏览量
2022-07-15
01:18:26
上传
评论
收藏 18KB RAR 举报
alvarocfc
- 粉丝: 105
- 资源: 1万+
评论7