前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一起来看看国产数学拟合优化工具——1stOpt到底有多强大?

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

作者头像
巴山学长
发布2022-01-19 15:54:53
2.8K0
发布2022-01-19 15:54:53
举报
文章被收录于专栏:巴山学长巴山学长

第一次接触到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源代码:

代码语言:javascript
复制
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源代码:

代码语言:javascript
复制
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源代码:

代码语言:javascript
复制
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源代码:

代码语言:javascript
复制
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源代码:

代码语言:javascript
复制
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的实用能力达业界领先水平。

示例代码:

代码语言:javascript
复制
Variables x, y;
Parameters a, b, c, d;
Function y = a-b*exp(-c*x^d);
Data;
0.05 0.13
0.15 0.13
0.25 0.19
0.35 0.34

7、求解带积分方程组

本题来源于小木虫,由于参数限制,改为4个参数:

http://muchong.com/t-4192342-1-authorid-8600892

代码语言:javascript
复制
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更为强大的求解功能,暂且演示到此。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档