声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 977|回复: 0

[综合讨论] 请教一个使用fmincon求解非线性规划结合符号函数编程的问题

[复制链接]
发表于 2008-1-18 22:04 | 显示全部楼层 |阅读模式

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

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

x

matlab中使用fmincon函数作非线性优化理论推导时,由于做的是理论推导,中间有几个常数(也是别的地方的理论推导的公式,在这里可以看成不变量常数)打算用字母表示(希望求解推导的优化求解结果中仍然用这几个字母表示),这样我就打算把它们设置成符号常量(M, pe0, C),这样在用fmincon推导求解的结果表达式中也是含有字母的理论结果。可是matlab报错了,错误信息如下:



??? Error using ==> fmincon
FMINCON cannot continue because user supplied objective function failed with the following error:
Undefined function or variable 'M'.

我查了很多相关信息,也进行了尝试,都没有解决,请大家帮忙,谢谢!

相关代码如下:
主函数:
clear,clc;
%syms M pe0 C;
%subs(M),subs(pe0),subs(C);
A = [-1 1 2;-1 1 0;-1 0 1];  
b = [0 0 0];
x0 = [7 4 1];  
lb = ones(3,1);

ub = 100.*lb;   
Aeq = [];
beq = [];
options=optimset('LargeScale','off');   

[x, fval] = fmincon(@myfun, x0, A, b, [], [], lb, ub, @mycon, options);
%[x, fval] = fmincon(@myfun, x0, A, b, [], [], lb, ub, @mycon, options, M, pe0, C);
%[x, fval] = fmincon(@myfun, x0, A, b, [], [], lb, ub, @mycon, options, pe0, C);
%[x, fval, exitflag, output, lambda] = fmincon(@opt_f, x0, A, b, [], [], lb, [], @opt_c);



两个调用函数:
function f = myfun(x, M)
%   M = inline(M);
%f = M^(-1)*x(1)*x(2)^(-1);
f = sym('M^(-1)*x(1)*x(2)^(-1)');

f = subs(f);
%f = inline(f);



function [c, ceq] = mycon(x, pe0, C)
%c(1) = pe0 - x(1)^(-1)*x(3);
%c(2) = -C + x(1)^(-1)*x(2);
c(1) = sym('pe0 - x(1)^(-1)*x(3)');
c(2) = sym('-C + x(1)^(-1)*x(2)');
%c(1) = subs(c(1));
%c(2) = subs(c(2));
c = [c(1) c(2)];
c = subs(c);
%c = inline(c);
ceq=[];


[ 本帖最后由 eight 于 2008-1-22 16:46 编辑 ]
回复
分享到:

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 15:28 , Processed in 0.050300 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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