QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4205|回复: 5
打印 上一主题 下一主题

Forcal全局优化库FcOpt更新

[复制链接]
字体大小: 正常 放大
forcal 实名认证       

45

主题

3

听众

282

积分

升级  91%

  • TA的每日心情
    难过
    2012-8-27 18:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2011-2-8 12:33 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    本帖最后由 forcal 于 2011-2-8 12:37 编辑
    ) w- H$ m7 h: u8 Q( G$ D: X: z
    * f6 k6 \6 w1 Y4 u" KForcal优化库FcOpt最近进行了更新,全局优化能力显著增强,使用更加方便,同时增加了隐函数全部解,非线性方程(组)全部解求解函数,更新了微分方程参数优化(拟合)实例。$ C' O4 s, M; D
    参考:http://www.forcal.net/sysm/forcal9/fchtm/fcopt.htm
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    musuchan 实名认证       

    1

    主题

    6

    听众

    40

    积分

    升级  36.84%

    该用户从未签到

    回复

    使用道具 举报

    杨帆 实名认证       

    4

    主题

    4

    听众

    626

    积分

    升级  6.5%

  • TA的每日心情
    奋斗
    2012-12-4 13:38
  • 签到天数: 314 天

    [LV.8]以坛为家I

    新人进步奖 最具活力勋章 发帖功臣

    群组数学趣味、游戏、IQ等

    群组数学建模

    群组我们一定会赢

    回复

    使用道具 举报

    forcal 实名认证       

    45

    主题

    3

    听众

    282

    积分

    升级  91%

  • TA的每日心情
    难过
    2012-8-27 18:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    谢谢楼上两位朋友!7 K6 l& m" K, \% C5 {/ j
    ) @* U1 b7 b5 _" U3 G( j4 D  Y
    使用Forcal优化库FcOpt做优化时,无论简单的优化,还是复杂的优化(例如含积分的优化、共享参数优化、复数优化、微分方程参数优化等等),基本步骤都是一样的:1 C1 X1 R- m& |6 u1 X( r1 G$ p- Z( q
    ) O5 e# \6 @5 v  I, ~' m" P4 Q# W' K
    1、给出拟合数据,一般保存在数组中。如果没有数据,这一步就省了。
    + ~. g7 R( e- o- l5 y! Q2、编写目标函数,做优化时就是要得到目标函数值最小时的最优参数值。自己写目标函数,似乎是麻烦了些,但非常灵活,前面提到的各种各样的优化都可以通过自己写目标函数来实现。正所谓以不变应万变也。
    4 [0 G  J1 \$ G$ F! _3、选择优化函数进行优化。
    " m; w  M7 B& f' M+ U' D& `& E$ P8 v* _
    在FcOpt中,我最喜欢用的优化函数是Opt,下面给出一个使用Opt做优化的例子:
    0 r0 I) F1 b6 o- v+ D1 n- i  _3 a2 ~
    例子:拟合公式:y = (p1)+(p2*exp(-p3*x/p5)+p4/(1+p4*p5*x))# I# S8 W& b$ q" X
    + X6 [; J& _) ]3 W8 M1 u. ^
    p1,p2,p3,p4,p5为待求参数
    , N; W' o( v: A4 {5 o
    + V9 M5 P" q" V2 K2 ~数据(x, y)7 B$ `  o. n5 Z* e  |% \
    0,                0.928
    ( x# A+ P4 s6 v2 t/ n0.0000098, 1.02
    ; p% E% c0 E8 @' o  k! |0.0000195, 1.12
    / ]! b0 [& `/ x& G, N  Y% b0 a* _0.0000293, 1.25
    5 p, V) y. A- o, s6 P0 {( L0.0000391, 1.42
    6 b/ ~8 \2 Z, E4 _0 h  g. R0.0000488, 1.7& v# p- p) \7 n2 I: H
    0.0000586, 2.01
    * O3 U  V* L& y4 _# x  K8 |* M- s0.0000684, 2.26, U( m( A9 M9 Z4 W2 b, J4 H1 q- w4 c; k. @
    0.0000781, 2.46
    ) w' U$ x  Q1 [. S; q+ ^" P/ j' d0.0000879, 2.63+ {$ N% Y' H7 D& s7 z* t3 P
    0.0000977, 2.82. R3 U4 {6 G8 K6 {
    0.0001074, 3.011 f; m- d# C5 |5 M( l! P8 P
    0.0001172, 3.28 p2 Q2 U% {1 O3 O
    0.000127,  3.41
    8 @! p1 K) Q+ ?( @* T0.0001367, 3.59
    . J/ w2 w) {% ~2 q1 _0.0001465, 3.72
    8 b/ @. B4 {$ B/ q. v! d, O; K4 w0.0001562, 3.85# v% d  s* _6 G6 I+ N3 n& F3 X
    0.000166,  3.98
    $ s& C' {; N" w, \- A$ L& M; F0.0001758, 4.08: q% l# |5 h! [$ H

    9 f7 ?4 _8 k, H7 v+ a7 qForcal代码:
    , q+ O4 F7 i1 L5 S' z# r: g
    1. !using["fcopt","math"];
    2. 6 w2 R/ p( x$ h5 f# F; E$ A
    3. init(::Array,max)= //准备数据
    4. - x& ?% {\\" ~6 `* e7 t
    5. {6 L/ n\\" r: j  ^7 g$ n0 T
    6.     max=19,
    7. 6 q4 X2 R9 M2 \! D
    8.     Array=arrayinit{2,max,2 :
    9. ! ^! d. b! s3 u% m7 E+ G  J* H) `
    10.         0,         0.928,$ h8 E: p, I4 M4 @  E
    11.         0.0000098, 1.02,
    12. / d7 L% N5 U. \0 U1 @3 K$ H
    13.         0.0000195, 1.12,& i  s! Q2 ~5 g
    14.         0.0000293, 1.25,
    15. * C. v& t! f# p0 Q) g: H  }2 O
    16.         0.0000391, 1.42,1 t* [4 }9 a% a+ E9 W2 q\\" a4 n
    17.         0.0000488, 1.7,+ @- _& U5 I: f) M& g3 e# J) e
    18.         0.0000586, 2.01,% g; q9 v7 A( R$ j& `
    19.         0.0000684, 2.26,# w+ Y; f# `! s1 ~
    20.         0.0000781, 2.46,
    21. 1 m' d1 u, n3 l6 U& p/ C7 d
    22.         0.0000879, 2.63,
    23. , L0 u4 i' A8 z' ?5 G
    24.         0.0000977, 2.82,/ y% f\\" j  l% h6 v0 `$ S0 p( a7 ]. e
    25.         0.0001074, 3.01,
    26. , ~! T- r- x0 q0 U
    27.         0.0001172, 3.2,\\" a  u: K# ?! A, H: X$ L' G
    28.         0.000127,  3.41,# _- i; a+ f9 C
    29.         0.0001367, 3.59,$ H0 L2 e' V* Y
    30.         0.0001465, 3.72,, J  M8 K+ y( M% u% p. x$ S9 f. G
    31.         0.0001562, 3.85,
    32. % F; o  S  M; A# d+ U9 V5 ^
    33.         0.000166,  3.98,
    34. 8 l$ B/ L: V* c
    35.         0.0001758, 4.08* K3 o4 r2 |8 R1 ?: l% m% O
    36.     }.free()
    37. 8 g! A3 [- x2 j1 G
    38. };
    39. $ l* X8 y5 ^( j' t) q1 l6 `
    40. f(p1,p2,p3,p4,p5 : i,s,x,y : Array,max)= //目标函数
    41. 7 Q; t5 O& W& l, P\\" F
    42. {
    43. 3 ]\\" t& ~7 q9 F! k( }\\" G. Z6 b2 W
    44.     s=0,i=0,(i<max).while{
    45. 3 b3 k2 [( k) d# P/ ?
    46.         x=Array[i,0], y=Array[i,1],
    47. / \+ b9 \! g6 _/ ^
    48.         s=s+[(p1)+(p2*exp(-p3*x/p5)+p4/(1+p4*p5*x))-y]^2,
    49. 1 o\\" K7 A+ [3 A1 s5 E  u
    50.         i++
    51. ; X/ b. H; N. |9 `! Q; P4 z4 h. q6 B4 Q* D
    52.     },& K# h! e9 I% v( E) E
    53.     sqrt[s/max]
    54. 3 j. T% R% @; g* q) A/ A- ?3 m
    55. };4 C3 k0 r5 W0 l  E  @  U/ x+ C: O6 b
    56. Opt[HFor("f"), optwaysimdeep, optwayconfra, optdeep,50]; //比较难的优化,我就这样使用Opt函数
    * ?" w( X: V- J7 R. }, J; B) _! S
    结果(需求解几次,前面的数是最优参数,最后一个数是目标函数值):% N4 Z% |# D6 I0 n% Q' V  a. Q
    , M$ q% f) I5 m
    6.855486033798995 4.813449005068769 -54298054.6899329 -10.72898361613976 -1516.502649185066 3.337716353170544e-002
    # w; f1 L) z, t; q/ O" Z6 k% G) |& u% |, t$ H. b
    感觉做这个优化题,是稍稍有些难度的,换句话说,如果题目难度不超过此题,Forcal可以轻松求解。
    3 S7 w3 t) @" b; G3 Q
    * Q3 y& c9 a; \4 L7 x7 n& q8 K喜欢优化的朋友可以尝试一下。
    ; p4 A% G: i/ O) V8 d" V
    + Y' i+ u/ s6 K7 u+ h2 q2 C目前我知道1stOpt可以轻松求解此题,还有一位优化高手也可以轻松求解此题,还想知道更多可以求解此题的朋友或软件。
    3 \. p9 I, M) i1 z% l
    - j. c% y0 y- _) }2 C- h
    回复

    使用道具 举报

    forcal 实名认证       

    45

    主题

    3

    听众

    282

    积分

    升级  91%

  • TA的每日心情
    难过
    2012-8-27 18:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    本帖最后由 forcal 于 2011-2-25 19:50 编辑
    . l5 n( W2 k; g! S; |
    1 D" w0 \" e, ~1 l" Q9 d2 R6 m! w美国国家标准与技术研究院(NIST: National Institute of Standards and Technology)提供有一套27道非线性拟合测试题,世界上几乎所有著名的数据分析软件包都以能通过该套测试题集为验证标准。Forcal全部能以任意随机初始值求得最优解。% y9 z/ d0 h8 O" i
    5 M. V+ O9 z1 [7 R. K4 r

    * D% G$ c: ]3 w5 C" F# R参考:http://www.forcal.net/yyhz/optnist.htm
    ) h3 v  d1 g, L* O1 M
    回复

    使用道具 举报

    17

    主题

    3

    听众

    2216

    积分

  • TA的每日心情
    开心
    2012-1-30 23:29
  • 签到天数: 39 天

    [LV.5]常住居民I

    群组小草的客厅

    群组数学建模

    群组Matlab讨论组

    群组LINGO

    群组中南民族大学

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-8-31 22:00 , Processed in 0.471677 second(s), 80 queries .

    回顶部