T=90.0*3.1415926/(180.0*30.0) FX=0.0
DO 10 K=0,30
PI=P0+K*T
QE=Q0+2.0*(PI-P0)**2/(3.0*3.1415926) D=SQRT(26.0-10.0*COS(PI))
AL=ACOS((D*D+X(2)*X(2)-X(1)*X(1))/(2.0*D*X(2))) BT=ACOS((D*D+24.0)/(10.0*D))
IF(PI.GE.0.0 .AND. PI.LT.3.1415926) THEN QI=3.1415926-AL-BT ELSE
QI=3.1415926-AL+BT
END IF
IF(K.NE.0 .OR. K.NE.30)THEN FX=FX+(QI-QE)**2*T ELSE
FX=FX+(QI-QE)**2*T/2.0 END IF 10 CONTINUE RETURN END
C ========================= SUBROUTINE GGX(N,KG,X,GX) C ========================= DIMENSION X(N),GX(KG) GX(1)=-X(1) GX(2)=-X(2)
GX(3)=-(X(1)+X(2))+6.0 GX(4)=-(X(2)+4.0)+X(1) GX(5)=-(4.0+X(1))+X(2)
GX(6)=-(1.4142*X(1)*X(2)-X(1)**2-X(2)**2)-16.0 GX(7)=-(X(1)**2+X(2)**2+1.4142*X(1)*X(2))+36.0 RETURN END
C ========================= SUBROUTINE HHX(N,KH,X,HX) C ========================= DIMENSION X(N),HX(KH) X(1)=X(1) RETURN END
11
输入数据如下: 2,7,0 4.3,3.2
2.,0.2,0.01,0.00001,0.00001 0,1,0
3.5,2.8,5.5,4.5
3.14 可执行程序的生成
①将程序文本保存成文件t001.txt,存放在OPT_EXAM\\FORTRAN\\0-fortran目录下。 ②使用DOS操作界面,OPT_EXAM\\FORTRAN\\0-fortran目录下,输入命令 asumt.for+t001.txt t001.for 回车。生成t001.for文件。 ③for1 t001; 回车; ④for2 回车;
⑤link t001; 回车,即生成可执行程序t001.exe。 ⑥从t001.dat文件中加载数据,运行t001.exe。 t001
操作过程如图:
12
图 3-2 操作步骤
3.15 结果与分析 结果显示如下:
============== PRIMARY DATA ==============
N= 2 KG= 7 KH= 0 X :
.4300000E+01 .3200000E+01 FX:
.7847605E-02 GX:
13
-.4300000E+01 -.3200000E+01 -.1500000E+01 -.2900000E+01 -.5100000E+01
-.6729390E+01 -.1218939E+02 X :
.4300000E+01 .3200000E+01 FX:
.7847605E-02 GX:
-.4300000E+01 -.3200000E+01 -.1500000E+01 -.2900000E+01 -.5100000E+01
-.6729390E+01 -.1218939E+02 HX:
PEN = .3974390E+01
R = .2000000E+01 C = .2000000E+00 T0= .1000000E-01 EPS1= .1000000E-04 EPS2= .1000000E-04
============== ITERATION COMPUTE ==============
***** IRC = 1 R = .2000000E+01 PEN= .3974390E+01
***** IRC = 2 R = .4000000E+00 PEN= .3119361E+01
***** IRC = 3 R = .8000001E-01 PEN= .6407908E+00
***** IRC = 4 R = .1600000E-01 PEN= .1439420E+00
***** IRC = 5 R = .3200000E-02 PEN= .3733451E-01
***** IRC = 6 R = .6400000E-03 PEN= .8986510E-02
***** IRC = 7 R = .1280000E-03 PEN= .2346609E-02
***** IRC = 8 R = .2560000E-04 PEN= .9042178E-03
***** IRC = 9 R = .5120001E-05 PEN= .5396702E-03
***** IRC =10 R = .1024000E-05 PEN= .4410887E-03
***** IRC =11 R = .2048000E-06 PEN= .4128061E-03
***** IRC =12 R = .4096001E-07 PEN= .4071001E-03
14
***** IRC =13 R = .8192003E-08 PEN= .4014154E-03
***** IRC =14 R = .1638401E-08 PEN= .3992769E-03
***** IRC =15 R = .3276801E-09 PEN= .3987240E-03
***** IRC =16 R = .6553602E-10 PEN= .3984505E-03
***** IRC =17 R = .1310720E-10 PEN= .3983411E-03
***** IRC =18 R = .2621441E-11 PEN= .3982889E-03
=============== OPTIMUM SOLUTION ==============
IRC= 18 ITE= 35 ILI= 94 NPE= 447 NFX= 482 NGR= 0 R= .2621441E-11 PEN= .3982696E-03 X :
.4135127E+01 .2315381E+01 FX:
.3982623E-03 GX:
-.4135127E+01 -.2315381E+01 -.4505072E+00 -.2180254E+01 -.5819746E+01
-.7079845E+01 -.3633157E-03 HX:
Stop - Program terminated.
从结果中得知当X1=4.135127,X2=2.315381时,目标函数取得最小值, 摇杆l3的转角最佳再现已知的运动规律:
2(???0)23?。
?E??0?
3.2 自选工程问题
3.21 问题描述
设计一个压缩圆柱螺旋弹簧,要求其质量最小。弹簧材料为65Mn,最大工作载荷为Fmax?40N,最小工作载荷为0,载荷变化频率fr?25Hz,弹簧寿命为104h,弹簧钢丝直径d的取值范围为1-4mm,中径D2的取值范围为10-30mm,工作圈数n不应小于4.5圈,弹簧旋绕比C不应小于4,弹簧一端固定,一端自由,工作温度为50℃,
15