fmincon函数返回值错误问题如何解决

Dr_DAWN 2021-11-15 17:36:06
%建立M-文件 fun3.m,定义目标函数:
function  f=fun3(x)
f=-0.043*x(1)-0.5*(0.054*x(2)+0.050*x(3)+0.044*x(4)+0.045*x(5));
%再建立M文件mycon.m,定义非线性约束条件:
function [g,ceq]=mycon(x)
g={
(2*x(1)+2*x(2)+x(3)+x(4)+5*x(5))/(x(1)+x(2)+x(3)+x(4)+x(5))-1.4;
  (9*x(1)+15*x(2)+4*x(3)+3*x(4)+2*x(5))/(x(1)+x(2)+x(3)+x(4)+x(5))-5
   };
ceq=[];
%再建立主程序
x0=[100;100;100;100;100];     %迭代初值选择
A=[1 1 0 0 0;1 1 1 1 1];b=[400;1000];   %两个线性约束矩阵
VLB=[0 0 0 0 0];VUB=[];     %各变量最小值大于0
Aeq=[];beq=[];       
[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB,'mycon')

运行时出现fmincon函数返回值错误,

错误使用 fmincon (line 710)
FMINCON requires all values returned by functions to be of data type double.

出错 LCX2222111031 (line 6)
[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB,'mycon')

目标函数和约束条件如下:

 

这个错误应该怎么解决那

...全文
3453 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

感觉是没加@的问题吧

Dr_DAWN 2021-11-15
  • 举报
回复 1
@蓝多多的小仓库 应该不是这个问题,我用的是另外建立两个M文件,分别来建立目标函数和约束条件,然后在主程序中调用,这个方法不需要加@来调用,可以在主程序中直接调用。我最后又看了下题目,我的约束条件写错了,约束改了之后可以啦,应该是这个错误的约束他的结果不成立吧。谢谢大佬~
  • 举报
回复
@Dr_DAWN 嗯嗯,我也学习到啦,谢谢你,跟着川川打卡吧,一起学习,加油!
川川菜鸟 全栈天神 2021-11-15
  • 打赏
  • 举报
回复
Dr_DAWN 2021-11-15
  • 举报
回复
@川川菜鸟 我最后又看了下题目,我的约束条件写错了,约束改了之后可以啦,应该是这个错误的约束他的结果不成立吧。谢谢大佬~
川川菜鸟 全栈天神 2021-11-16
  • 举报
回复
@Dr_DAWN 好的

30,421

社区成员

发帖
与我相关
我的任务
社区描述
打造最热爱学习的高校社区,帮助大家提升计算机领域知识,带大家打比赛拿奖,提高自我,希望大家共同创造良好的社区氛围。
社区管理员
  • 川川菜鸟
  • 亡心灵
  • 星辰菜鸟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

监督大家学习,每日学习打卡,以投稿形式打卡。扫码关注公众号,可加入粉丝群和领取大量资源。

试试用AI创作助手写篇文章吧