fmincon进行优化,出错了
:'( 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=;
= 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三个参数,那么该怎样进行修改替换呢?
高人请解答!!!
回复 楼主 的帖子
你的目标函数表达错误,程序我给你改了一下:A=[-1 -2 -2;1 2 2];
b=;
x0=;
= fmincon('-x(1)*x(2)*x(3)',x0,A,b)
运行结果
x =
1.0e+007 *
5.7098
-1.4274
-1.4274
fval =
-1.1634e+022 您好,首先感谢您对我的问题的关注。
我知道目标函数本应表达成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=;
x0=;
= fmincon('myfun1',x0,A,b)
运行结果
x =
1.0e+007 *
5.7098
-1.4274
-1.4274
fval =
-1.1634e+022 原来还是这个原因。。。
知道了,非常感谢您!:@)
我也出了这个问题,不过我还是没看懂,我的是这样的
>> =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};
我的问题在哪呢?
回复 5楼 的帖子
不是没有定义矩阵变量x么???
页:
[1]