特别说明:本次采用的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.13
0.15 0.13
0.25 0.19
0.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更为强大的求解功能,暂且演示到此。
从上面的示例也不难看出,1stOpt的代码编写比起matlab更加容易,至于计算效率嘛,大家可以拿以上的例子去matlab中试试,没有对比就没有伤害