根据已知条件、约束条件(如下所述),在python平台下利用遗传算法自动得到目标函数下(即混凝土用量最省)的 桩长L、桩径d(这两个也叫自变量)。
A、已知条件
1、地质资料中的土层分布、桩基参数端阻、侧阻
2、上部结构柱底反力约为50000 kN
B、约束条件
1、控制桩基长径比(暂定80),避免桩长/桩径过大。
2、控制桩数(暂定每个承台小于12桩),避免造成承台几何尺寸过大,两柱之间承台冲突无法施工
C、目标函数
1、桩基混凝土用量最省。
1、输入已知条件
Nk=50000#柱底反力kN
qs=[32,32.000,26.000,30.00,16.00,40,42.00,50,55,60,50] #侧阻kpa
qp=[0,0,0,0,0,1300,1000,1300,1300,1800,1100] #端阻kpa
soildepth=[3.100,5.300,2.90,6.40,8.6,1.10,7.4,3.8,12.8,10.2,30]#土厚
2、定义罚函数及目标函数
if(n>12):#定义罚函数,不允许桩数太多造成承台尺寸太大
Vc=1000*Vp #Vp为桩基混凝土量
else:
Vc=0
ZB=Vp+Vc#目标函数 为桩基混凝土用量
3、约束条件
constraint_ueq1=[lambda x: x[0]*1000/x[1]-80] #长径比限值约束公式
4、遗传算法及桩基承载力计算
遗传算法库:from sko.GA import GA
桩基承载力
5、运行结果:
最优参数取值(桩长、桩径): [ 59.77 ,800. ]
最小用量m³: [360.56551543]
全部代码如下: