matlab中fmincon函数的用法。

我建立一个myfunction.m文件functionf=myfuncion(x)M=[2,-1;-1,2];B=[3;-3];f=1/2*x'*M*x+B'*x;然后在... 我建立一个myfunction.m文件function f=myfuncion(x)
M=[2,-1;-1,2];
B=[3;-3];
f=1/2*x'*M*x+B'*x;然后在matlab窗口中输入 x0=[0;0];
>> A=[];
>> B=[];
>> Aeq=[];
>> Beq=[];
>> lb=[-2;-2];
>> ub=[2;2];
>> x = fmincon('myfunction',x0,[],[],[],[],lb,ub)结果出现:
Warning: Trust-region-reflective method does not currently solve this type of problem,
using active-set (line search) instead.
In fmincon at 422
??? Error using ==> fmincon at 504
FMINCON cannot continue because user supplied objective function failed with the following error:
Undefined function or method 'myfunction' for input arguments of type 'double'.
然后我用
options = optimset('Algorithm','active-set');
>> x = fmincon('myfunction',x0,[],[],[],[],lb,ub)还是不对,请大侠们指教!谢谢!
展开
 我来答
行者野
2015-07-08 · TA获得超过3170个赞
知道小有建树答主
回答量:709
采纳率:66%
帮助的人:443万
展开全部

fmincon函数在MATLAB中用于求解非线性多元函数最小值,应用十分广泛。使用该函数的关键是定义目标函数,以及在约束条件中有非线性约束时准确定义。具体介绍如下:

一、求解问题的标准型为:

min F(X)

s.t

AX <= b

AeqX = beq

G(x) <= 0

Ceq(X) = 0

VLB <= X <= VUB

 

其中X为n维变元向量,G(x)与Ceq(X)均为非线性函数组成的向量,其他变量的含义与线性规划、二次规划中相同。


二、用Matlab求解上述问题,基本步骤分为三步:

1. 首先建立M文件fun.m定义目标函数F(X):

function f = fun(X);

f = F(X)

 

2. 若约束条件中有非线性约束:G(x) <= 0 或 Ceq(x) = 0,则建立M文件nonlcon.m定义函数G(X)和Ceq(X);

function [G, Ceq] = nonlcon(X)

G = ...

Ceq = ...

 

3. 建立主程序,非线性规划求解的函数时fmincon,命令的基本格式如下: 

注意:

(1)fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options 参数的GradObj设置为'on'),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法,当既有等式约束又有梯度约束时,使用中型算法。

(2)fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。

(3)fmincon函数可能会给出局部最优解,这与初值X0的选取有关。

shine戚七七
推荐于2016-10-05 · TA获得超过4.7万个赞
知道大有可为答主
回答量:2万
采纳率:75%
帮助的人:2687万
展开全部
fmincon函数在MATLAB中用于求解非线性多元函数最小值,应用十分广泛。使用该函数的关键是定义目标函数,以及在约束条件中有非线性约束时准确定义。具体介绍如下:
一、求解问题的标准型为:
min F(X)
s.t
AX <= b
AeqX = beq
G(x) <= 0
Ceq(X) = 0
VLB <= X <= VUB

其中X为n维变元向量,G(x)与Ceq(X)均为非线性函数组成的向量,其他变量的含义与线性规划、二次规划中相同。
注意:
(1)fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options 参数的GradObj设置为'on'),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法,当既有等式约束又有梯度约束时,使用中型算法。
(2)fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。
(3)fmincon函数可能会给出局部最优解,这与初值X0的选取有关。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yang森com
推荐于2016-08-19 · TA获得超过695个赞
知道小有建树答主
回答量:103
采纳率:0%
帮助的人:128万
展开全部

没有错吧。

计算结果为

x =

   -0.5000

    2.0000

fval =

   -2.2500

这是图片里的程序计算出的结果

追问
嗯,按照你的程序就好了,为什么我这里程序计算出的结果是
x=
-2
-2
feval=
-8
怎么不一样啊?另外我的那个是哪里错了啊?谢谢!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式