Matlab基本操作回顾(二)——工具箱

1. 曲线拟合工具箱

工具箱提供的拟合类型有:

  • Custom Equations:用户自定义的函数类型

  • Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)

  • Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w)

  • Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-((x-b1)/c1)^2)

  • Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving

  • Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~

  • Power:幂逼近,有2种类型,a*x^b 、a*x^b + c

  • Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型

  • Smoothing Spline:平滑逼近

  • Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1)

  • Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)

“Fit options”按钮:设置拟合算法、修改待估计参数的上下限等参数

问题在于只能拟合有一个变量或者是两个变量的曲线。

2. 优化工具箱

单目标优化

2.1 无约束非线性优化

(1)fminunc: 无约束 非线性 单变量优化,求极小值;需要提前写好func.m的函数,在objectfunction中输入@func.

应用典型类似 y=x^2-x+2

(2)fminsearch: 无约束 不可微 非线性 单变量优化,求极小值。典型应用类似于y=|x-3|

(3)lsqnonlin:无约束 非线性 最小二乘优化,求极小值。

2.2 有约束非线性优化

(1)fmincon:有约束 非线性 多变量优化,求极小值。多变量用x(1),x(2),x(3)...x(n)表示,约束表示:AX<=b AeqX=beq

注意是极小值而不是最小值,所以start point对于最终结果的影响比较大。

也可以求解非线性约束。使用方法类似于ga。

(2)linprog:线性规划,注意这里的f不是输入@func,而是输入参数的数组。比如说:min f=-4*x1-x2,输入f=[-4,-1]

2.3 智能算法

(1)ga

fitness function: 目标函数,传入numbers of variables个数的行向量。

numbers of variables:变量的个数

nonlinear constraint function:非线性约束函数,传入x,返回c(x)和ceq(x)。c(x)<=0 ceq(x)=0

[x,fval,exitflag,output,population,scores] = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options)

其中x是最小值对应的自变量,fval是最小值对应的因变量,nonlcon代表非线性约束,intCon为整数约束的变量的index。

IntCon非空时,Aeq 并且beq必须是空条目([]),并且nonlcon必须返回空ceq

官方文档:https://ww2.mathworks.cn/help/gads/ga.html?searchHighlight=ga&s_tid=doc_srchtitle#mw_9561d7b3-902b-481f-b95b-579424b64219

多目标优化

2.4 其他优化工具

(1)最大最小问题

[x,fval,maxfval,exitflag,output,lambda] = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

exitflag为145,则得到的解决方案正确;为0,则达到迭代次数停止;为-1,被输出函数终止;为-2,则找不到可行点。

maxfval评估的函数的最大值。

(2)gamultiobj

使用遗传算法求解多目标优化问题

[x,fval,exitflag,output,population,scores] = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)

关于输入参数:

fun是目标函数,输入行向量x,返回函数数组f(x)的实数向量

nvars是变量数,即x的长度

关于输出结果:

x是帕累托点

fval是帕累托点的参数值

exitflag为1即结果正确;为0则超过最大迭代次数;为-1则由输出函数终止;为-2则找不到可行点;为-5则超出时限。

(3)fgoalattain

多目标达成问题

[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)

输出参数:

attainfactor:描述目标到达的程度。若是负的,证明已经超过了目标值;若是正的,证明小于目标值。

输入参数:

goal:目标向量

weight:控制目标的到达程度

整数规划和0-1规划

关于整数规划即为在intcon中填写有整数规划的下角标,关于0-1规划即为整数规划加上范围限定为0到1.

https://blog.csdn.net/u010155023/article/details/48058391

猜你喜欢

转载自blog.csdn.net/Rosalind_Xu/article/details/86614516