24小时热门版块排行榜    

查看: 2719  |  回复: 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的回帖

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的回帖
查看全部 17 个回答

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的回帖

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的回帖

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 2026国自然函评费到账 +16 羊腰板 2026-08-21 17/850 2026-08-23 23:02 by tianxiaochun
[基金申请] 让我中一个面上吧! +12 大萍1987 2026-08-20 15/750 2026-08-23 20:44 by 大萍1987
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +4 process2012 2026-08-23 5/250 2026-08-23 19:58 by jurkat.1640
[基金申请] 什么时候开奖? +9 CrisMessi 2026-08-18 10/500 2026-08-23 12:03 by 丶昵称占用
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[基金申请] 范进中举一文的中心思想 +3 炎黄贵胄 2026-08-22 4/200 2026-08-22 20:02 by mycsru
[基金申请] filecode,4个jtjc了 +13 ziyangfang 2026-08-19 16/800 2026-08-22 17:08 by WH3796
[基金申请] 人气不行了 +8 fansofjerry 2026-08-21 8/400 2026-08-22 16:30 by zyqchem
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 放榜前的不淡定 40+4 snowwithsea 2026-08-19 14/700 2026-08-21 23:51 by cratir
[基金申请] 科研孤儿太难了 +17 我4大白菜 2026-08-20 18/900 2026-08-21 20:57 by zhangev
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[论文投稿] 投稿咨询 +5 wwm09 2026-08-17 7/350 2026-08-21 10:11 by 期刊论文帮手
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
信息提示
请填处理意见