weilinhy 发表于 2008-3-29 19:40

1stOpt遇到的问题

Constant N=25412000, M=3200000,k=1,X=52,tao=7,S=24.65,sigmas=1.55,r=0.0488; Function sigmas-(V*(((N+k*M-M*k*normcdf(((log(k*V/(N*X))+(r+1/2*sigma*sigma)*tao)/(sigma*sqrt(tao)))))/(N*(N+k*M))))/S)*sigma; S*N-V+M*((1/(N+k*M))*(k*V*normcdf(((log(k*V/(N*X))+(r+1/2*sigma*sigma)*tao)/(sigma*sqrt(tao))))-exp(-r*tao)*N*X*(normcdf(((log(k*V/(N*X))+(r+1/2*sigma*sigma)*tao)/(sigma*sqrt(tao)))-sigma*sqrt(tao)))));

这里M与公式中n一样意思。
怎么运行结果会错误
sigma明显应该比sigmas大才对
一次结果如下:
迭代数: 839
计算用时(时:分:秒:毫秒): 00:00:03:188
计算中止原因: 达到收敛判定标准
优化算法: 遗传算法
函数表达式 1: 1.55-(v*(((25412000+1*3200000-3200000*1*normcdf(((log(1*v/(25412000*52))+(0.0488+1/2*sigma*sigma)*7)
            /(sigma*sqrt(7)))))/(25412000*(25412000+1*3200000))))/24.65)*sigma
         2: 24.65*25412000-v+3200000*((1/(25412000+1*3200000))*(1*v*normcdf(((log(1*v/(25412000*52))+(0.0488+1/2
            *sigma*sigma)*7)/(sigma*sqrt(7))))-exp(-0.0488*7)*25412000*52*(normcdf(((log(1*v/(25412000*52))+(0.0488
            +1/2*sigma*sigma)*7)/(sigma*sqrt(7)))-sigma*sqrt(7)))))
目标函数值: 8502.57205479832
v: 521377667.955105
sigma: -5365.93202516455 (肯定为正数才对啊)

另外运行一次又得:
迭代数: 43
计算用时(时:分:秒:毫秒): 00:00:02:16
计算中止原因: 达到收敛判定标准
优化算法: 遗传算法
函数表达式 1: 1.55-(v*(((25412000+1*3200000-3200000*1*normcdf(((log(1*v/(25412000*52))+(0.0488+1/2*sigma*sigma)*7)
            /(sigma*sqrt(7)))))/(25412000*(25412000+1*3200000))))/24.65)*sigma
         2: 24.65*25412000-v+3200000*((1/(25412000+1*3200000))*(1*v*normcdf(((log(1*v/(25412000*52))+(0.0488+1/2
            *sigma*sigma)*7)/(sigma*sqrt(7))))-exp(-0.0488*7)*25412000*52*(normcdf(((log(1*v/(25412000*52))+(0.0488
            +1/2*sigma*sigma)*7)/(sigma*sqrt(7)))-sigma*sqrt(7)))))
目标函数值: 18069.6833970072
v: 521399420.814364
sigma: -420.558088954254(肯定为正数才对啊)
====== 计算结束 ======

dingd 发表于 2008-3-30 19:07

1:最好用新版本(如果用的是老版本1.5, 1.0)
2:换用其它算法。

下面是2.5版得出的一组解:
v: 701167071.714792
sigma: 1.55537298574437

weilinhy 发表于 2008-3-30 23:38

继续问

如果我想在中间设置变量 比如 Constant N=81870000000, n=12280000000,k=1,X=5.5,tao=2,S=6,Sigmas=0.12,r=0.0488; StartProgram; Var nw , ds, fai1, fai2, W: Double; begin nw-(log(k*V/(N*X))+(r+1/2*sigma*sigma)*tao)/(sigma*sqrt(tao)); fai1-normcdf(nw); fai2-normcdf(nw-sigma*sqrt(tao)); W-(1/(N+k*n))*(k*V*fai1-exp(-r*tao)*N*X*fai2); Ds-((N+k*n-n*k*fai1)/(N*(N+k*n))); S*N-V+n*W; sigmas-(V*ds/S)*sigma; 哪里出错了 忘赐教!

lipenggg 发表于 2013-10-11 21:37

刚刚学习使用
页: [1]
查看完整版本: 1stOpt遇到的问题