24小时热门版块排行榜    

查看: 2362  |  回复: 16

yijianmeixyt

铁杆木虫 (著名写手)

一剪梅

[求助] Matlab中的fmincon功能求助 已有2人参与

本人在非线性约束优化问题中遇到难题,请高人帮忙,谢谢!
问题描述:
求解函数
f=w1+w2+40*cos(a1)*cos(b1)+30* sin(a1)cos(b1)-40
在非线性约束条件
0.05≤w1+20*sin(b1)+20* sin(a1)*cos(b1)≤0.05
0.05≤w1-20*sin(b1)+20* sin(a1)*cos(b1)≤0.05
0.05≤w1-20*sin(b1)-20* sin(a1)*cos(b1)≤0.05
0.05≤w1+20*sin(b1)-20* sin(a1)*cos(b1)≤0.05
0.05≤40* sin(a1)*cos(b1)≤0.05
0.05≤w2-20*sin(b2)+50* sin(a2)*cos(b2)≤0.05
0.05≤w2-20*sin(b2)-50* sin(a2)*cos(b2)≤0.05
0.05≤w2+20*sin(b2)+50* sin(a2)*cos(b2)≤0.05
0.05≤w2+20*sin(b2)-50* sin(a2)*cos(b2)≤0.05
下的优化解。约束条件中的角度a和b都非常小,一般只有0.006*180/π左右,而w的范围在±0.05。

我使用fmincon()命令来计算,程序代码如下:
%/////主程序
clc;
clear;
% w1=x(1);
% w2=x(2);
% cos(a1)=x(3)
% cos(b1)=x(4)
% sin(b2)=x(5)
% sin(a2)=x(6)
x0=[0;0;0;0;0;0];
ub=[0.05;0.05;1;1;0.007;0.007];
lb=-ub;
options = optimset('display','iter','Algorithm','active-set');
[x,fval,exitflag]=fmincon(@myfun,x0,[],[],[],[],lb,ub,@nonlcon1,options);
disp(fval);
%/////////目标函数
function f= myfun(x)
f=x(1)+40*x(3)*x(4)+30*x(4)*sqrt(1-x(3)^2)-40+x(2)+0*x(5)+0*x(6);
end
%////////约束
function [c ceq]=nonlcon1(x)
c=[x(1)-20*sqrt(1-x(4)^2)-20*x(4)*sqrt(1-x(3)^2)-0.05;-(x(1)-20*sqrt(1-x(4)^2)-20*x(4)*sqrt(1-x(3)^2)-0.05)-0.1;...
    x(1)+20*sqrt(1-x(4)^2)-20*x(4)*sqrt(1-x(3)^2)-0.05;-(x(1)+20*sqrt(1-x(4)^2)-20*x(4)*sqrt(1-x(3)^2)-0.05)-0.1;...
    x(1)+20*sqrt(1-x(4)^2)+20*x(4)*sqrt(1-x(3)^2)-0.05;-(x(1)+20*sqrt(1-x(4)^2)+20*x(4)*sqrt(1-x(3)^2)-0.05)-0.1;...
    x(1)-20*sqrt(1-x(4)^2)+20*x(4)*sqrt(1-x(3)^2)-0.05;-(x(1)-20*sqrt(1-x(4)^2)+20*x(4)*sqrt(1-x(3)^2)-0.05)-0.1;...
    x(2)-20*x(5)-50*sqrt(1-x(5)^2)*x(6)-0.05;-(x(2)-20*x(5)-50*sqrt(1-x(5)^2)*x(6)-0.05)-0.1;...
    x(2)-20*x(5)+50*sqrt(1-x(5)^2)*x(6)-0.05;-(x(2)-20*x(5)+50*sqrt(1-x(5)^2)*x(6)-0.05)-0.1;...
    x(2)+20*x(5)+50*sqrt(1-x(5)^2)*x(6)-0.05;-(x(2)+20*x(5)+50*sqrt(1-x(5)^2)*x(6)-0.05)-0.1;...
    x(2)+20*x(5)-50*sqrt(1-x(5)^2)*x(6)-0.05;-(x(2)+20*x(5)-50*sqrt(1-x(5)^2)*x(6)-0.05)-0.1];
ceq=[];
end

结果明显不对,请求高人指点,谢谢!
回复此楼
Rejoicinginhope,patientintribulation.
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

cooooldog

铁杆木虫 (著名写手)

ส็็็

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
yijianmeixyt: 金币+5, 有帮助, 提供了一个解决思路 2014-03-26 09:32:30
fmincon用的方法本质上是非线性目标函数的迭代方法优化;
大部分情况下得不到好的结果. 尤其是初值不理想的情况下;
所以,最好用专门的全局优化算法.
1.模拟退火,
2. 遗传算法;
3.粒子群;
4. 差分演化;
5.其它蚁群蜂群鱼群等算法...
得到的结果再作为fmincon的初值.

此外,含有正余弦函数的优化问题,最好变成不含正余弦的两个变量形式
然后增加一个两变量平方和为1的非线性约束.
ส็็็็็็็็็็็็็็็็็็็็
4楼2014-03-26 09:24:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
yijianmeixyt: 金币+5, 有帮助, 有助于问题的解决! 2014-03-26 09:13:02
约束写的有问题吧,比如“0.05≤40* sin(a1)*cos(b1)≤0.05”,上下界都是0.05?
2楼2014-03-26 08:58:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yijianmeixyt

铁杆木虫 (著名写手)

一剪梅

引用回帖:
2楼: Originally posted by dingd at 2014-03-26 08:58:09
约束写的有问题吧,比如“0.05≤40* sin(a1)*cos(b1)≤0.05”,上下界都是0.05?

不好意思,左边是-0.05
Rejoicinginhope,patientintribulation.
3楼2014-03-26 09:12:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yijianmeixyt

铁杆木虫 (著名写手)

一剪梅

引用回帖:
4楼: Originally posted by cooooldog at 2014-03-26 09:24:51
fmincon用的方法本质上是非线性目标函数的迭代方法优化;
大部分情况下得不到好的结果. 尤其是初值不理想的情况下;
所以,最好用专门的全局优化算法.
1.模拟退火,
2. 遗传算法;
3.粒子群;
4. 差分演化;
5.其 ...

谢谢,这个道理我基本也懂,但是我对优化算法很不了解,时间也很紧张,目前在准备论文的一个案例,没想到fmincon搞不定,特别想有人能给我提供全套的程序,谢谢!
Rejoicinginhope,patientintribulation.
5楼2014-03-26 09:32:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
yijianmeixyt: 金币+10, ★★★很有帮助, 非常有用 2014-03-26 10:45:19
试下1stOpt,全局优化求解:
CODE:
MinFunction w1+w2+40*cos(a1)*cos(b1)+30* sin(a1)cos(b1)-40;
        -0.05<=w1+20*sin(b1)+20* sin(a1)*cos(b1)<=0.05;
        -0.05<=w1-20*sin(b1)+20* sin(a1)*cos(b1)<=0.05;
        -0.05<=w1-20*sin(b1)-20* sin(a1)*cos(b1)<=0.05;
        -0.05<=w1+20*sin(b1)-20* sin(a1)*cos(b1)<=0.05;
        -0.05<=40*sin(a1)*cos(b1)<=0.05;
        -0.05<=w2-20*sin(b2)+50* sin(a2)*cos(b2)<=0.05;
        -0.05<=w2-20*sin(b2)-50* sin(a2)*cos(b2)<=0.05;
        -0.05<=w2+20*sin(b2)+50* sin(a2)*cos(b2)<=0.05;
        -0.05<=w2+20*sin(b2)-50* sin(a2)*cos(b2)<=0.05;

目标函数值(最小): -110.099999999887
w1: -0.049999999917981
w2: -0.0499999999686499
a1: -2.32599889392923E-15
b1: -3.14159265359389
b2: 9.35389140020864E-16
a2: -3.00105093596349E-33

约束函数:
   1: w1+20*sin(b1)+20* sin(a1)*cos(b1)-(-0.05) = 1.640242178E-010
   2: w1+20*sin(b1)+20* sin(a1)*cos(b1)-(0.05) = -0.09999999984
   3: w1-20*sin(b1)+20* sin(a1)*cos(b1)-(-0.05) = 1.069075384E-013
   4: w1-20*sin(b1)+20* sin(a1)*cos(b1)-(0.05) = -0.1
   5: w1-20*sin(b1)-20* sin(a1)*cos(b1)-(-0.05) = 1.387084891E-014
   6: w1-20*sin(b1)-20* sin(a1)*cos(b1)-(0.05) = -0.1
   7: w1+20*sin(b1)-20* sin(a1)*cos(b1)-(-0.05) = 1.639311811E-010
   8: w1+20*sin(b1)-20* sin(a1)*cos(b1)-(0.05) = -0.09999999984
   9: 40*sin(a1)*cos(b1)-(-0.05) = 0.05
   10: 40*sin(a1)*cos(b1)-(0.05) = -0.05
   11: w2-20*sin(b2)+50* sin(a2)*cos(b2)-(-0.05) = 3.133134724E-011
   12: w2-20*sin(b2)+50* sin(a2)*cos(b2)-(0.05) = -0.09999999997
   13: w2-20*sin(b2)-50* sin(a2)*cos(b2)-(-0.05) = 3.133134724E-011
   14: w2-20*sin(b2)-50* sin(a2)*cos(b2)-(0.05) = -0.09999999997
   15: w2+20*sin(b2)+50* sin(a2)*cos(b2)-(-0.05) = 3.136876175E-011
   16: w2+20*sin(b2)+50* sin(a2)*cos(b2)-(0.05) = -0.09999999997
   17: w2+20*sin(b2)-50* sin(a2)*cos(b2)-(-0.05) = 3.136876175E-011
   18: w2+20*sin(b2)-50* sin(a2)*cos(b2)-(0.05) = -0.09999999997
6楼2014-03-26 09:45:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yijianmeixyt

铁杆木虫 (著名写手)

一剪梅

引用回帖:
6楼: Originally posted by dingd at 2014-03-26 09:45:58
试下1stOpt,全局优化求解:

MinFunction w1+w2+40*cos(a1)*cos(b1)+30* sin(a1)cos(b1)-40;
        -0.05<=w1+20*sin(b1)+20* sin(a1)*cos(b1)<=0.05;
        -0.05<=w1-20*sin(b1)+20* sin(a1)*c ...

不太看得懂,我将w1,w2,a1,b1,a2,b2的函数值作为初始值,带入fmincon函数中,迭代了4步,电脑就算不下去了,得到的优化值为0.1,我觉得离目标很近了,我估计最终的优化值是0.07左右,谢谢!
不知道我的做法对不对,如果不对,请你指出,另外,如果最终算出来且结果正确的话,我将兑现金币,谢谢!
Rejoicinginhope,patientintribulation.
7楼2014-03-26 10:08:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yijianmeixyt

铁杆木虫 (著名写手)

一剪梅

引用回帖:
6楼: Originally posted by dingd at 2014-03-26 09:45:58
试下1stOpt,全局优化求解:

MinFunction w1+w2+40*cos(a1)*cos(b1)+30* sin(a1)cos(b1)-40;
        -0.05<=w1+20*sin(b1)+20* sin(a1)*cos(b1)<=0.05;
        -0.05<=w1-20*sin(b1)+20* sin(a1)*c ...

不太看得懂,我将w1,w2,a1,b1,a2,b2的函数值作为初始值,带入fmincon函数中,迭代了4步,电脑就算不下去了,得到的优化值为0.1,我觉得离目标很近了,我估计最终的优化值是0.07左右,谢谢!
不知道我的做法对不对,如果不对,请你指出,另外,如果最终算出来且结果正确的话,我将兑现金币,谢谢!
Rejoicinginhope,patientintribulation.
8楼2014-03-26 10:08:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
nono2009: 金币+10, 鼓励应助 2014-08-11 20:04:26
目标函数“w1+w2+40*cos(a1)*cos(b1)+30* sin(a1)cos(b1)-40;”应该订正为“w1+w2+40*cos(a1)*cos(b1)+30* sin(a1)*cos(b1)-40;”

结果:
目标函数值(最小): -80.1124687498363
w1: -0.0249999998711498
w2: -0.0499999999774767
a1: 3.14284265391531
b1: 0
b2: 0
a2: 1.59174869141693E-14
9楼2014-03-26 11:09:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yijianmeixyt

铁杆木虫 (著名写手)

一剪梅

引用回帖:
9楼: Originally posted by dingd at 2014-03-26 11:09:51
目标函数“w1+w2+40*cos(a1)*cos(b1)+30* sin(a1)cos(b1)-40;”应该订正为“w1+w2+40*cos(a1)*cos(b1)+30* sin(a1)*cos(b1)-40;”

结果:
目标函数值(最小): -80.1124687498363
w1: -0.0249999998711498
w2:  ...

目标函数“w1+w2+40*cos(a1)*cos(b1)+30* sin(a1)cos(b1)-40;”应该订正为“w1+w2+40*cos(a1)*cos(b1)+30* sin(a1)*cos(b1)-40;”
请问这句话怎么理解,我没看出来有什么区别,谢谢
Rejoicinginhope,patientintribulation.
10楼2014-03-26 11:36:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yijianmeixyt 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 344求调剂 +3 knight344 2026-03-16 3/150 2026-03-16 09:42 by 无际的草原
[考研] 311求调剂 +6 冬十三 2026-03-15 6/300 2026-03-16 08:00 by wang_dand
[基金申请] NSFC申报书里申请人简历中代表性论著还需要在申报书最后的附件里面再上传一遍吗 20+5 NSFC2026我来了 2026-03-10 14/700 2026-03-15 23:53 by 不负韶华的虎
[考研] 本科南京大学一志愿川大药学327 +3 麦田耕者 2026-03-14 3/150 2026-03-14 20:04 by 外星文明
[考研] 中科大材料专硕319求调剂 +3 孟鑫材料 2026-03-13 3/150 2026-03-14 18:10 by houyaoxu
[考研] 255求调剂 +3 李嘉慧, 2026-03-12 4/200 2026-03-14 16:58 by 有只狸奴
[考研] 290求调剂 +4 @将就将就看 2026-03-10 8/400 2026-03-14 14:23 by 千千运气
[考研] 材料080500调剂求收留 +3 一颗meteor 2026-03-13 3/150 2026-03-14 10:54 by peike
[考研] 306求调剂 +4 唐薏薏 2026-03-09 4/200 2026-03-14 01:19 by JourneyLucky
[考研] 311求调剂 +8 zchqwer 2026-03-10 8/400 2026-03-14 00:01 by JourneyLucky
[考研] 材料371求调剂 +9 鳄鱼? 2026-03-11 11/550 2026-03-13 22:53 by JourneyLucky
[考研] 材料与化工304求B区调剂 +5 邱gl 2026-03-11 6/300 2026-03-13 22:37 by JourneyLucky
[考研] 0703,333分求调剂 一志愿郑州大学-物理化学 +3 李魔女斗篷 2026-03-11 3/150 2026-03-13 22:24 by JourneyLucky
[考研] 工科,求调剂 +3 我887 2026-03-11 3/150 2026-03-13 21:39 by JourneyLucky
[考研] 【0856】化学工程(085602)313 分,本科学科评估A类院校化学工程与工艺,诚求调剂 +7 小刘快快上岸 2026-03-11 7/350 2026-03-13 16:06 by ruiyingmiao
[考研] 314求调剂 +7 无懈可击的巨人 2026-03-12 7/350 2026-03-13 15:40 by JourneyLucky
[考研] 0703一志愿211 285分求调剂 +4 ly3471z 2026-03-13 4/200 2026-03-13 13:00 by JourneyLucky
[考博] 读博申请 +5 感dd 2026-03-10 7/350 2026-03-11 17:02 by QGZDSYS
[考研] 298求调剂 +3 Vv呀! 2026-03-10 3/150 2026-03-10 22:40 by 剑诗杜康
[考研] 收调剂 +7 调剂的考研学生 2026-03-10 7/350 2026-03-10 17:57 by 麦茶汤圆
信息提示
请填处理意见