声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1262|回复: 5

[综合讨论] fmincon进行优化,出错了

[复制链接]
发表于 2008-5-24 20:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
:'( a=sym(x(1));b=sym(x(2));c=sym(x(3));
f = -a * b * c;
f=subs(f);

>>  A=[-1 -2 -2;1 2 2];b=[0;72];
[x,fval] = fmincon(f,x0,A,b)

为什么执行这个程序时,出错,提示如下: ??? Input argument "x" is undefined. Error in ==> myfun at 2 a=sym(x(1));b=sym(x(2));c=sym(x(3));

大约意思是利用fmincon进行优化求满足约束条件的f最小时的a、b、c。
但是红色部分写成
f = -x(1)*x(2)*x(3)程序运行确实是对的;可是f来自其它函数,
只能是含有a、b、c三个参数,那么该怎样进行修改替换呢?

高人请解答!!!
回复
分享到:

使用道具 举报

发表于 2008-5-24 22:45 | 显示全部楼层

回复 楼主 的帖子

你的目标函数表达错误,程序我给你改了一下:
A=[-1 -2 -2;1 2 2];
  b=[0;72];
  x0=[1;1;1];
  [x,fval] = fmincon('-x(1)*x(2)*x(3)',x0,A,b)
运行结果
x =
  1.0e+007 *
    5.7098
   -1.4274
   -1.4274
fval =

-1.1634e+022
发表于 2008-5-25 11:19 | 显示全部楼层
您好,首先感谢您对我的问题的关注。
我知道目标函数本应表达成F(x(1),x(2),x(3))形式的;
但是现状是我的是F(a,b,c)的目标函数,所以不知道怎样进行正确的变量之间的转换,以便达到fmincon函数的要求。

你的x不能用sym定义成符号变量,这是自变量。
function f=myfun1(x)
a=x(1);      b=x(2);     c=x(3);
f=-a*b*c;
end
  A=[-1 -2 -2;1 2 2];
  b=[0;72];
  x0=[1;1;1];
  [x,fval] = fmincon('myfun1',x0,A,b)
运行结果
x =
  1.0e+007 *
    5.7098
   -1.4274
   -1.4274
fval =
-1.1634e+022

评分

1

查看全部评分

 楼主| 发表于 2008-5-25 18:36 | 显示全部楼层
原来还是这个原因。。。
知道了,非常感谢您!:@)
发表于 2008-6-9 21:25 | 显示全部楼层

我也出了这个问题,不过我还是没看懂,我的是这样的

>> [x,fval,exitflag,output]=fmincon(min,x0,[],[],[],[],[],[],st,options)
 ??? Input argument "x" is undefined.

Error in ==> min at 2
c=x(2)*{a*x(1)^b+90.5*x(1)+200};


我的问题在哪呢?
 楼主| 发表于 2008-6-20 01:18 | 显示全部楼层

回复 5楼 的帖子

不是没有定义矩阵变量x么???

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 07:32 , Processed in 0.065429 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表