首页/文章/ 详情

一起来看看国产数学拟合优化工具——1stOpt到底有多强大?

2年前浏览3740
第一次接触到1stOpt是因为N年前需要求解一组非常复杂的微分方程组,自己又懒得用matlab敲代码,于是就在网上搜索有没有更为轻松便捷的办法。一找就找到了1stOpt,虽然是个绿色和谐版,但基本上能满足自己需求,顺带把1stOpt的帮助文档都看了个遍。

看了1stOpt官网的介绍,据说1stOpt是一款不依赖初始值的数学优化综合工具,这一点连老牌的Matlab、Origin、Lingo、Gams等都是望洋兴叹的,这得益于其开发的通用全局优化算法。不依赖初始值对科学计算而言是极其有用的,比如求根、求解微分、优化等问题往往对初始值有高度依赖,初始值选择不当可能会得到高误差甚至是错误的结果,而1stOpt完美解决了此问题。现已被广泛用于工程、金融、决策、流通、生产等分析、计算、规划领域。揽括:模型自动优化率定;参数估算;任意模型公式线性,非线性拟合,回归;非线性连立方程组求解;常微方程(组)求解(初值、边值问题);常微分方程(组)拟合求解;复数方程求解、复数非线性拟合;任意维函数,隐函数极值求解;隐函数根求解,作图,求极值;线性,非线性及整数规划;组合优化问题等。
下面就通过几个实例来看看1stOpt的实力:
特别说明:本次采用的1stOpt 5.5 英文试用版,实例全部来自于5.0官方帮助文档。
由于试用版有参数个数限制,计算参数不能超过4个,目前官方最新版为8.0,9.0版即将发布,下面就一起来看看吧。

1、二维针状全局最优的函数

图片

图片

该函数的函数图形如下所示,在(50,50)处取得全局最大值 1.1512,其第二极大值为1.12837,它是一个多峰值函数,采用传统优化方法几乎不能找到全局最优点。
1stOpt源代码:
    Parameter x[0,100], y[0,100];ConstStr r = sqrt((x-50)^2 (y-50)^2) exp(1);MaxFunction Sin(r)/r   1;

    图片

    2、隐函数优化

    图片

    1stOpt源代码:
      Parameter x[-1,7], y[-2,2];Minimum = z;Function z = sin((z*x-0.5)^2   x*2*y^2-z/10)*exp(-((x-0.5-exp(-y z))^2   y^2-z/5 3));

      图片

      3、非线性规划

      图片

      1stOpt源代码:
        Parameter x1[0,10], x2[0,10];MaxFunction (sin(2*pi*x1))^3*sin(2*pi*x2)/(x1^3*(x1 x2));x1^2-x2 1 <= 0;1-x1 (x2-4)^2 <= 0;

        图片

        4、整数规划

        图片

        1stOpt源代码:
          Parameter x(1:2)[0,100,0], x3[3,100,0], x4[0,100,0];MinFunction -2*x1-x2-4*x3-3*x4;2*x2 x3 4*x4<54;3*x1 4*x2 5*x3-x4<62;x1 2*x2 x3-2*x4<-3;

          图片

          5、带等式约束的优化问题

          图片

          1stOpt源代码:
            Algorithm = DE1[100];PenaltyFactor = 5;ParameterDomain = [-50,50];MinFunction exp(sin(50*x))  sin(60*exp(y))  sin(70*sin(x)) sin(sin(80*y))-sin(10*(x y)) (x^2 y^2)^sin(y)/4;x-((cos(y))^x-x)^y<=0;

            图片

            6、非线性拟合
            美国国家标准与技术研究院(NIST)提供有一套 27 道非线性拟合测试题,世界上几乎所有著名的数据分析软件包都以能通过该套测试题集为验证标准。经对比测试,1stOpt 是目前唯一不依赖使用 NIST 提供的初始值, 而能以任意随机初始值就可求得全部最优解的软件包(如果使用 NIST 提供的初始值,则更可轻易求得最优解)。由于在实际应用当中,选择确定合理的初始值组是一件非常困难的事,尤其是在参数量比较多的情况下。从此意义而言1stOpt的实用能力达业界领先水平。 
            示例代码:
              Variables x, y;Parameters a, b, c, d;Function y = a-b*exp(-c*x^d);Data;0.05 0.130.15 0.130.25 0.190.35 0.34

              图片

              7、求解带积分方程组
              本题来源于小木虫,由于参数限制,改为4个参数:
              http://muchong.com/t-4192342-1-authorid-8600892
                Parameters a,b,c,d;Function int(exp(a b*x c*x^2 d*x^3),x=0.5779,13.5883)=1;int(x*exp(a b*x c*x^2 d*x^3),x=0.5779,13.5883)=6.86;int(x^2*exp(a b*x c*x^2 d*x^3),x=0.5779,13.5883)=54.39;int(x^3*exp(a b*x c*x^2 d*x^3),x=0.5779,13.5883)=478.14;

                图片

                由于功能和参数限制,没法演示1stOpt更为强大的求解功能,暂且演示到此。

                理论科普MATLAB
                著作权归作者所有,欢迎分享,未经许可,不得转载
                首次发布时间:2022-01-13
                最近编辑:2年前
                过冷水
                博士 | 讲师 讨论号:927550334
                获赞 356粉丝 176文章 109课程 11
                点赞
                收藏
                作者推荐
                ¥5 5.0
                未登录
                还没有评论
                课程
                培训
                服务
                行家
                VIP会员 学习 福利任务 兑换礼品
                下载APP
                联系我们
                帮助与反馈