关于用MATLAB优化函数fmincon进行约束优化编程的问题?

已知数据和近似函数:x=[0 18 54 72 144 225 360];
y=[0 -123.76 -293.35 -233.77 4.58 114.59 119.18];
y=k*theta+a0+a1*cos(w*theta)+b1*sin(w*theta)+a2*cos(2*w*theta)+b2*sin(2*w*theta)+a3*cos(3*w*theta)+b3*sin(3*w*theta)+a4*cos(4*w*theta)+b4*sin(4*w*theta)+a5*cos(5*w*theta)+b5*sin(5*w*theta)+a6*cos(6*w*theta)+b6*sin(6*w*theta)。
用最小二乘法拟合,用fmincon函数进行优化。目标函数是x取0和360时,近似函数的一次导数、二次导数、三次导数都相等。请问这边的目标函数怎么编程呢。我看fmincon函数的等式约束是Aeq*X=Beq,我这边的目标函数感觉不符合这样的形式。请大佬指教。

第1个回答  2021-03-22
题主的问题可以分成两个部分来求解。
第一部分,利用已知数据。用最小二乘法拟合其系数,即
k、a0、a1、w、b1、a2、b2、a3、b3、a4、b4、a5、b5、a6*、b6
求解步骤:
1、将数值分别赋值给x、y
2、初定系数的初值
3、利用 nlinfit函数,求出系数
第二部分,才是求其极值
求解步骤:
1、创建目标函数,即
y=k*theta+a0+a1*cos(w*theta)+b1*sin(w*theta)+a2*cos(2*w*theta)+b2*sin(2*w*theta)+a3*cos(3*w*theta)+b3*sin(3*w*theta)+a4*cos(4*w*theta)+b4*sin(4*w*theta)+a5*cos(5*w*theta)+b5*sin(5*w*theta)+a6*cos(6*w*theta)+b6*sin(6*w*theta)
2、创建约束条件函数,即
Dy=diff(y,1) %一阶导数
D2y=diff(y,2) %二阶导数
D3y=diff(y,3) %三n阶导数
ceq(1)=Dy-D2y %等式条件
ceq(2)=Dy-D3y %等式条件
c=[] %不等式条件
3、然后,利用fmincon函数,求出目标值为最小的theta值追问

大佬您好,是这样的,我是已知七个点的坐标,然后想用y=k*x+a0+a1*cos(w*x)+b1*sin(w*x)+a2*cos(2*w*x)+b2*sin(2*w*x)+a3*cos(3*w*x)+b3*sin(3*w*x)+a4*cos(4*w*x)+b4*sin(4*w*x)+a5*cos(5*w*x)+b5*sin(5*w*x)+a6*cos(6*w*x)+b6*sin(6*w*x),这个函数来进行拟合,目标函数就是七个点的函数值和真实的y值差的平方相加最小,约束条件就是一阶二阶三阶导数相等。不知道我这个想法有没有问题。用fmincon函数可以实现嘛?

追答

七个点的函数值,从统计分析的角度来说是不够的(至少十个以上)。就是做出来了也是不真实的。

关于用MATLAB优化函数fmincon进行约束优化编程的问题?
3、然后,利用fmincon函数,求出目标值为最小的theta值

关于用MATLAB优化函数fmincon进行约束优化编程的问题
5 options=optimset('Largescale','on','display','iter','tolx',1e-4); 是用来控制fmincon的各种参数,tolx是优化终止条件;LargeScale是采用的算法;display选择iter显示迭代次数;6 注意log(a)a不能为0,我测试了下,提示log运算中a出现0的情况;...

如何用matlab求解非线性约束优化问题
对于非线性约束的优化问题,matlab有个很好的函数fmincon可以很容易解决。之前一个已经详细介绍了fmincon的用法,下面通过一个例子来说明用它来解决非线性约束问题。此题的问题描如下图。由于本经验主要是谈非线性约束下的最优化问题,对于其他线性约束就不再考虑。然后启动matlab。新建一个函数文件,用来写目...

关于用MATLAB优化函数fmincon进行约束优化编程的问题
矩阵维数不一样 用点计算

一个简单的matlab问题,fmincon优化,谢谢
的地方,或者在约束条件的边界上。本题的主函数的点为 x(1)=2,x(2)=3,在约束条件以外,所以,最小值发生在离这个点最近的约束条件边界上,即 x(1)=3,x(2)=4,其对应的最小值为 28。用Matlab的fmincon的话,X=fmincon(inline('(x(1)-2)^2 + (x(2)-3)^2 +26 '),[1;1],[...

使用matlab的fmincon优化解决非线性问题,一直报错,求大神解答,小白在线...
这道题我试了fmincon函数,效果不明显,所以改用全局搜索函数GlobalSearch。另外说明一下,这都是求极小值的函数,如果要求m的最大值,那就先求出-m的最小值,其相反数即为最大值。下面给出优化过程:先在m文件中创建约束函数 function [c,ceq] = fun_con(x) % 非线性不等约束 c = [];...

在matlab中,使用优化工具箱fmincon,计算一个优化问题,但报错了,求大神...
目标函数(Objective function)应该设置为@(x)-x(1)*x(2)*x(3),像你现在的目标函数是需要三个输入参数的,而fmincon调用它的时候只会提供一个参数,所以导致输入参数不足。另外,像这种简单的优化问题,其实也可以直接用命令行调用:fmincon(@(x)-x(1)*x(2)*x(3),[10 10 10],[-1 -2...

使用matlab的fmincon优化解决非线性问题,一直报错,求大神解答,小白在线...
问题出在约束条件和初值个数都是3个,则会要求目标值也是3个,而优化问题要求得出一个标题值,而不是3个目标值。所以,可这样改:建立目标函数的M文件:function m =fun1(x)m=cos(x)*4\/(3*pi);约束条件:function [g,h]=fun2(x)g=cos(5*x);%此处可改 h=[];%此处可改 操作函数:x...

matlab的fmincon函数程序运行问题求助
命令fminunc().单独写个.M文件,把约束条件写进去,在约束区有个“Nonlinear constraint function” @+"约束文件名"例子:求解如附件图片所示的有约束非线规划问题,分三个步骤 1.建立名为myobjfunc的m文件如下 function RES = myobjfunc(x)RES=(x(3)*(1\/(2*(x(3)^2 + x(5))*(x(4)...

关于matlab优化问题。使用fmincon时,出现以下警告,应该怎么办啊?
fmincon默认使用Trust-region-reflective算法,但该类方法对于有些情况不适用(例如存在非线性约束的情况),所以用警告的方式提示你使用别的方法。如果不介意看到警告信息,直接忽略无妨;如果不想看到警告,主程序可以这样调用:opt=optimset('Algorithm', 'active-set',);[x,FVAL] = fmincon(...,@myc...

相似回答
大家正在搜