how to resolve the issue with fmincon

6 ビュー (過去 30 日間)
dav
dav 2014 年 5 月 11 日
コメント済み: dav 2014 年 5 月 11 日
Hi,
I need to use the following code in my program. however, it gives an error and the warning. It happens because I use SIZE() when assigning the initial values. but i must use it that way.
Can someone please help me overcome this?
code:
theta0 = ones(size(svhat),1);
Av = ones(size(svhat),1)';
Av(1,1) = 0;
lbb = zeros(size(svhat),1);
lbb(1,1) = 1;
lbb = eps*lbb;
bv = 0.99999;
opts = optimset('Display','off','Algorithm','sqp');
%function
[theta, opt] = fmincon(@(theta)alach(theta,epshat),theta0,Av,bv,[],[],lbb,[],[],opts);
error:
Warning: Input arguments must be scalar.
> In test at 146
Warning: Input arguments must be scalar.
> In test at 148
Warning: Input arguments must be scalar.
> In test at 151
Error using sqpLineSearch (line 22)
Objective function is undefined at initial point. Fmincon cannot continue.
Error in fmincon (line 851)
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = sqpLineSearch(funfcn,X,full(A),full(B),full(Aeq),full(Beq), ...
Error in test (line 161)
[theta, opt] = fmincon(@(theta)alach(theta,epshat),theta0,Av,bv,[],[],lbb,[],[],opts);

採用された回答

Matt J
Matt J 2014 年 5 月 11 日
編集済み: Matt J 2014 年 5 月 11 日
I think you might really want
theta0 = ones(numel(svhat),1);
or
theta0=ones(size(svhat));
As for the fmincon error, your function @(theta)alach(theta,epshat) is not returning a finite value at theta0. You should check what it is actually returning.
  6 件のコメント
dav
dav 2014 年 5 月 11 日
編集済み: dav 2014 年 5 月 11 日
This is what i got. thanks
theta0 =
1 1 1 1 1 1 1
ftheta0 =
NaN
Av_dims =
7 1
Furthermore, Av should be a row vector while lbb,theta0 are column vectors.
dav
dav 2014 年 5 月 11 日
Dear Matt,
The following code worked just fine.
Thank you very much!
code:
theta0 = ones(numel(svhat),1);
Av = ones(numel(svhat),1)';
Av(1,1) = 0;
%Av = Av';
lbb = ones(numel(svhat),1);
lbb(1,1) = 1;
lbb = eps*lbb;
%lbb=lbb';
bv = 0.99999;
opts = optimset('Display','off','Algorithm','sqp');
%function
[theta, opt] = fmincon(@(theta)alach(theta,epshat),theta0,Av,bv,[],[],lbb,[],[],opts);

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeParallel Computing Fundamentals についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by