
MATLAB中fmincon函数出现问题,求大神帮助
近期做毕设,用到此函数。我的需求是在一个循环体内有一个待优化函数f有5个参数,其中有两个参数mar和mbr是固定的,每循环一次改变一次。剩下的三个变量PA,PB,PR.是...
近期做毕设,用到此函数。我的需求是 在一个循环体内有一个待优化函数f有5个参数,其中有两个参数mar和mbr是固定的,每循环一次改变一次。剩下的三个变量PA,PB,PR.是待优化的参数。 而我的约束条件没有非线性的。
这个是fmincon函数的调用形式。 我的问题是如果我没有非线性约束条件,但是有其它的参数需要传递。那么我在 ‘Nlc’(也就是非线性约束函数)这个位置写什么?我的程序如下
下面为待优化函数
我执行后显示
由于我以前几乎没有用MATLAB,对基本的知识可能还有很多不知道。
希望有大神能帮我看看,给我点帮助,万分感谢 展开
这个是fmincon函数的调用形式。 我的问题是如果我没有非线性约束条件,但是有其它的参数需要传递。那么我在 ‘Nlc’(也就是非线性约束函数)这个位置写什么?我的程序如下
下面为待优化函数
我执行后显示
由于我以前几乎没有用MATLAB,对基本的知识可能还有很多不知道。
希望有大神能帮我看看,给我点帮助,万分感谢 展开
展开全部
1、首先,你的参数写错位了——A后面应该有b吧?缺少一个参数,是造成目前报错的直接原因。
2、没有非线性约束,则该位置的参数也写成空矩阵 []。
3、传递附加参数的做法,除了你现在使用的参数补位方法外,目前更多的使用匿名函数或嵌套函数的做法。
匿名函数:
amr=...;
bmr=...;
fmincon(@(x)EE(x,amr,bmr),....)
嵌套函数:
function main
amr=...;
bmr=...;
fmincon(@EE,....)
function y=EE(x)
.... % 此处可使用amr、bmr等诸函数中定义的变量
end
end
追问
谢谢你,问题解决了! 不过我现在做这个还有好多其他问题啊,能不能留个QQ什么的联系方式,请教下你。万分感谢····
追答
【优化函数里的beq代表的总功率,我想画一张EEmax关于beq的图,我把beq这个参数改为一个变量的时候就报错, Row dimension of Aeq is inconsistent with length of beq】,注意beq和Aeq的行数应该相等,那样才能构成约束Aeq*x=beq。

2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询