1stOpt学习

介绍

1stOpt是一款强大、速度快、易于学习使用的数值优化分析计算软件,具备强大的全局优化算法,能够实现非线性拟合、非线性方程组、参数估算反演、方程求解、微分方程求解、微分方程拟合 、非线性规划、混合整数规划等。

使用

常见关键词

Parameter :定义参数。例如定义4个参数,即Parameter a1, a2, a3, a4; 也可简写为Parameter a(1:4);
Variable : 定义变量。Variable x, y, z;
Function : 定义函数。Function y = a*x^2 +b*x+c;

实例

直线拟合

1
2
3
4
5
6
7
8
9
10
11
Title "直线拟合";
Variable x, y;
Parameter a, b;
Function y = a*x + b;
Data;
0 2
1 5
2 8
3 10
4 12
5 15

输出结果:

1
2
3
4
5
6
7
8
9
10
11
12
参数	最佳估算
---------- -------------
a 2.51428571428575
b 2.38095238095232
====== 结果输出 =====
No 实测值y 计算值y
1 2 2.3809524
2 5 4.8952381
3 8 7.4095238
4 10 9.9238095
5 12 12.4380952
6 15 14.9523810

二次方拟合

1
2
3
4
5
6
7
8
9
10
11
Title "二次方拟合";
Variable x, y;
Parameter a, b, c;
Function y = a*x^2 + b*x +c;
Data;
0 0
1 1
2 4
3 9.6
4 15
5 26

输出结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
参数	最佳估算
---------- -------------
a 1.06428571418668
b -0.247142856453474
c 0.128571427511527
====== 结果输出 =====
No 实测值y 计算值y
1 0 0.1285714
2 1 0.9457143
3 4 3.8914286
4 9.6 8.9657143
5 15 16.1685714
6 26 25.5000000

自定义拟合

1
2
3
4
5
6
7
8
9
10
11
12
Title "自定义拟合";
Parameter qmax, k, c;
Variable Ce, qe;
Function qe = qmax*(k*Ce^(1-c))/(1+k*Ce^(1-c));
Data;
1.24 193.33
0.26 156.6
2.64 218.28
9.93 300.38
14.81 310.67
55.22 327.8
72.31 335.53

结果为:

1
2
3
4
5
参数	最佳估算
---------- -------------
qmax 411.347351715183
k 0.916862424175182
c 0.612643683746461

求最值

1、求f=x*sin(x)+sin(x)最小值x,$x\in[-3\pi, \pi]$

1
2
3
4
Title "最小值";
Parameter x=[-3*pi,3*pi];
Minimum;
Function x*sin(x)+sin(x);

结果为:

1
2
目标函数值(最小): -5.79760050138202
x: 4.88082214979277

2、$f=\sum\limits_{i=1}^{n-1}(3\cdot (cos(2\cdot x_i)+sin(2\cdot x_{i+1}))+\sqrt{x_i^2+x_{i+1}^2})$, 其中$\overline{X}\in$[-30, 30], n=20

1
2
3
4
Title "最小值";
Constant n=20;
Parameter x(1:n)=[-30,30];
MinFunction Sum(i = 1:n-1)(3*(Cos(2*x[i])+Sin(2*x[i+1]))+Sqrt(x[i+1]^2+x[i]^2));

结果为:

1
2
3
4
5
目标函数值(最小): -51.7695462136127
x1: 1.50336427311939
x2: -1.10118099140195
x3: -1.09449959452066
...

3、$z=sin((z\cdot x-0.5)^2+2\cdot x\cdot y^2-\frac{z}{10})\exp(-((x-0.5-\exp(-y+z))^2+y^2-\frac{z}{5}+3))$的最小值,其中,$x\in[-1,7]$, $y\in[-2,2]$ 。

1
2
3
4
Title "最小值";
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));

结果为:

1
2
3
目标函数值(最小): -0.0233540833030252
x: 2.89827025608124
y: -0.857313007336409

4、线性规划
求 $2\cdot x_1+3\cdot x_2+ x_3$的最大值。其中,
$$\begin{cases}
x_1+3\cdot x_2+x_3\leq15 \
2\cdot x_1+3\cdot x_2-x_3\leq18 \
x_1-x_2+x_3\leq3 \
x_1,x_2,x_3\geq0
\end{cases}$$

1
2
3
4
5
6
Title "最大值";
Parameter x(1:3)[0,];
MaxFunction 2*x1+3*x2+x3;
x1+3*x2+x3<=15;
2*x1+3*x2-x3<=18;
x1-x2+x3<=3;

结果为:

1
2
3
4
5
函数表达式: 2*x1+3*x2+x3
目标函数值(最大): 20
x1: 5
x2: 3
x3: 1

更多参考资料

1stOpt教程