声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4307|回复: 2

[1stopt] 1stOpt与Lingo的非线性拟和测试对比!

[复制链接]
发表于 2008-5-6 16:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
非线性拟和实质上也是一个优化问题,即残差平方和最小。1stOpt有专门的拟和模式,代码简单直观,动态图形显示计算结果;Lingo没有专门的拟和形式,只能将问题转换成一般的优化问题。下面以两个实例来对比验证各自的表现。Lingo版本是10,启用“Global Solver”,1stOpt版本是2.5.
例一:
公式:y = a0 + a1*x^k1 + a2*X^k2;
数据:x,y
5 3.3
10 6.5
15 9.2
20 11.9
25 14.5
30 17.0
35 19.4
40 21.7
45 23.9
50 25.9
55 27.6
60 29.2
65 30.0
70 30.3
75 30.0
80 29.2
85 26.0
90 21.0
95 12.0
Lingo代码:
Model:
   Sets:
       BAC/R1..R19/:x,y;
   EndSets
   Data:
       x = 5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95;
       y =3.3,6.5,9.2,11.9,14.5,17.0,19.4,21.7,23.9,25.9,27.6,29.2,30.0,30.3,30.0,29.2,26.0,21.0,12.0;
   EndData
   Min=@Sum(BAC:(a0+a1*x^k1+a2*x^k2-y)^2);
   @free(a0);
   @free(a1);
   @free(a2);
   @free(k1);
   @free(k2);
End
运行时间很长,结果也很离谱:Min=464.3750
A0 -734327.3
A1 367157.5
K1 0.1212479E-04
A2 367158.0
K2 0.1174782E-04
1stOpt代码:
Algorithm = LM2;
Function Y = a0 + a1*x^k1 + a2*X^k2;
Data;
5 3.3
10 6.5
15 9.2
20 11.9
25 14.5
30 17.0
35 19.4
40 21.7
45 23.9
50 25.9
55 27.6
60 29.2
65 30.0
70 30.3
75 30.0
80 29.2
85 26.0
90 21.0
95 12.0
很快得结果:
残差平方和(SSE): 0.909314071040377 (对应Lingo的最小值)
a0          -1.48141876206282
a1          -1.33957893482488E-13
k1          7.26524918693183
a2          1.34593124056475
k2          0.770896456786862
例二:
公式:y=b1*exp(b2*abs(x+b3)^b4);
数据:x,y
27.25 1
27.75 3
28.25 6
28.75 13
29.25 18
29.75 19
30.25 17
30.75 16
31.25 6
31.75 5
32.25 2
Lingo代码:
Model:
   Sets:
       BAC/R1..R11/:x,y;
   EndSets
   Data:
       x=27.25,27.75,28.25,28.75,29.25,29.75,30.25,30.75,31.25,31.75,32.25;
       y=1,3,6,13,18,19,17,16,6,5,2;
   EndData
   Min=@Sum(BAC:(b1*@exp(b2*@abs(x+b3)^b4)-y)^2);
   @free(b1);
   @free(b2);
   @free(b3);
   @free(b4);
End
计算不知何时终止,强行中断,得Min=275.9210
B1 0.000000
B2 32.88549
B3 -30.43433
B4 -0.1287276E-01
1stOpt代码:
Algorithm = GLM;
Function y=b1*exp(b2*abs(x+b3)^b4);
Data;
27.25 1
27.75 3
28.25 6
28.75 13
29.25 18
29.75 19
30.25 17
30.75 16
31.25 6
31.75 5
32.25 2
几秒内完成,
残差平方和(SSE): 14.6664218246103
b1          19.1581776899949
b2          -0.362592752520546
b3          -29.8159227205935
b4          2.29795107715564
上述两例,Lingo都难以完成任务,完败于1stOpt。当然这并不能说Lingo不好。在非线性拟和方面,做过大量测试,绝大多数情况,Lingo还是表现不错,抛除其代码不是很直观外,应用效果虽不如1stOpt,但比Origin、Matlab等强,也不用猜初值。
大家可以自己验证一下!

[ 本帖最后由 dingd 于 2008-5-6 20:52 编辑 ]
回复
分享到:

使用道具 举报

发表于 2012-5-26 10:30 | 显示全部楼层
这是使用提供lingo12计算的结果, 用的时间是长点:   
Local optimal solution found.
  Objective value:                             0.9092270
  Objective bound:                              0.000000
  Infeasibilities:                              0.000000
  Extended solver steps:                             632
  Total solver iterations:                       2882005

  Model Class:                                       NLP

  Total variables:                      6
  Nonlinear variables:                  5
  Integer variables:                    0

  Total constraints:                    2
  Nonlinear constraints:                1

  Total nonzeros:                       6
  Nonlinear nonzeros:                   5

                                Variable           Value        Reduced Cost
                                      A0       -1.495460           0.3264887E-03
                                      A1        1.351174           0.6113963E-02
                                      K1       0.7699962           0.3195477E-01
                                      A2        0.000000           -2.066217
                                      K2        7.274076           0.1475154E-03
 楼主| 发表于 2012-5-30 15:58 | 显示全部楼层
很久以前的帖子了。

第一个问题用Lingo 13跑了近20分钟也没得到最优解,强行终止了。

用最新版的1stOpt 5.0,计算5次,每次仅需10秒左右,均可得相同结果:
均方差(RMSE): 0.218755695715365
残差平方和(SSE): 0.909227033750352
相关系数(R): 0.999667174132494
相关系数之平方(R^2): 0.999334459038045
决定系数(DC): 0.999334459038046
卡方系数(Chi-Square): 0.022935922103561
F统计(F-Statistic): 5258.87991885924

参数        最佳估算
----------        -------------
a0        -1.49546127006435
a1        1.35117327583104
k1        0.769996104686907
a2        -1.28596600510275E-13
k2        7.27408052590875
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-19 19:53 , Processed in 0.052803 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表