有约束最优化问题,用matlab求解
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/19 07:44:14
有约束最优化问题,用matlab求解
![](http://img.wesiedu.com/upload/a/c5/ac57465a6daa4557121f91fe48b2f143.jpg)
w为角速度,alpha是角加速度,第一个式子就是先加速-匀速-减速,总共转过的角度为22.2度,第三个式子和第四个式子是要保证定轴转动时,在r处的加速度大小小于0.5g,然后大神们看看怎么优化,或者给个程序.
![](http://img.wesiedu.com/upload/a/c5/ac57465a6daa4557121f91fe48b2f143.jpg)
w为角速度,alpha是角加速度,第一个式子就是先加速-匀速-减速,总共转过的角度为22.2度,第三个式子和第四个式子是要保证定轴转动时,在r处的加速度大小小于0.5g,然后大神们看看怎么优化,或者给个程序.
![有约束最优化问题,用matlab求解](/uploads/image/z/19026103-31-3.jpg?t=%E6%9C%89%E7%BA%A6%E6%9D%9F%E6%9C%80%E4%BC%98%E5%8C%96%E9%97%AE%E9%A2%98%2C%E7%94%A8matlab%E6%B1%82%E8%A7%A3)
假设最优时候的a1不等于a2,那么取a1' = a2' = max{a1,a2}将是更优的解.因此,最优时候的a1与a2必定相等.
给定角加速度a时,加速时间越长那么转过的角度越多.在加速度不大于0.5g的约束下,加速时间最多可以是:
![](http://img.wesiedu.com/upload/0/43/043db65d328edf1ce4850fa21fed1b0f.jpg)
加速与减速过程所转过的角度是a*t(a)^2,是个随a递减的函数.假设最优时候的角加速度为a,加速时间t < t(a),那么可以增大a到某个值a',加速时间为t(a'),使得a'*t(a')^2 = at^2.因此,最优时候的加速时间必取到最大值.
综上,可得最终优化式子:
![](http://img.wesiedu.com/upload/d/5f/d5f68620c11f446df818eb2ff4aa54a2.jpg)
代码如下:
g = 9.8;
r = .056;
t = @(a)(g^2/(4*r^2*a^4)-1/a^2)^(1/4);
f = @(a)t(a)+22.2/a/t(a);
a = fminsearch(f,1e-6);
fprintf('a1 = a2 = %f\nt1 = t3 = %f\nt2 = %f\n',a,t(a),22.2/a/t(a)-t(a))
再问: 请问为什么考虑选择fminsearch函数呢?
再答: fminsearch使用单纯形法来求无约束标量函数的局部最小值。上述目标函数无约束,且图像类似对勾函数,适合用fminsearch求解。
如果有约束,可以考虑用fminbnd、fmincon来求解;
如果函数复杂,可以考虑用进化计算如GA(遗传算法)来求解。
给定角加速度a时,加速时间越长那么转过的角度越多.在加速度不大于0.5g的约束下,加速时间最多可以是:
![](http://img.wesiedu.com/upload/0/43/043db65d328edf1ce4850fa21fed1b0f.jpg)
加速与减速过程所转过的角度是a*t(a)^2,是个随a递减的函数.假设最优时候的角加速度为a,加速时间t < t(a),那么可以增大a到某个值a',加速时间为t(a'),使得a'*t(a')^2 = at^2.因此,最优时候的加速时间必取到最大值.
综上,可得最终优化式子:
![](http://img.wesiedu.com/upload/d/5f/d5f68620c11f446df818eb2ff4aa54a2.jpg)
代码如下:
g = 9.8;
r = .056;
t = @(a)(g^2/(4*r^2*a^4)-1/a^2)^(1/4);
f = @(a)t(a)+22.2/a/t(a);
a = fminsearch(f,1e-6);
fprintf('a1 = a2 = %f\nt1 = t3 = %f\nt2 = %f\n',a,t(a),22.2/a/t(a)-t(a))
再问: 请问为什么考虑选择fminsearch函数呢?
再答: fminsearch使用单纯形法来求无约束标量函数的局部最小值。上述目标函数无约束,且图像类似对勾函数,适合用fminsearch求解。
如果有约束,可以考虑用fminbnd、fmincon来求解;
如果函数复杂,可以考虑用进化计算如GA(遗传算法)来求解。