数学建模社区-数学中国

标题: 求助: fmincon的参数问题 [打印本页]

作者: 亚瑟王的冬瓜    时间: 2010-5-20 10:10
标题: 求助: fmincon的参数问题
t=2.3263;: L, Y1 L! P2 J! `: A: K& Y$ z3 [
k=0.5244;! [3 p* G3 l% T' ?9 |/ Z3 V9 R, C4 ~
R=0.15;
2 S, U, t* y+ u+ d- `  s- s# gu=[0.1221,0.1786,0.1452,0.1054,0.1132]';: G/ k0 ~1 V" U9 c
E=[1234,864,-617,-246,987;864,642,586,-198,-815;-617,586,1433,469,-963;-246,-198,469,346,25;987,-815,-963,25,1827];
+ _: i% e/ X% M! d# e/ w1 RE=E/10000;( t- Z% b: Z* @8 M/ V
c=0.0075;; T0 o* |# \% m' @
options = optimset('Algorithm','active-set'); % run active-set algorithm
. v. N$ H: ~- C& |5 Eaeq=[1+c,1+c,1+c,1+c,1+c];
9 [* T: y( c$ M* y, n/ M1 bbeq=1;
/ W' N( _4 F- L- j. W# C8 q+ b% Hlb=[0,0,0,0,0]';
; U3 ^$ z5 g3 U- V0 ^* Nub=[1,1,1,1,1]';6 ~$ I0 {6 V2 d) o+ _+ @+ e& [4 V
x0=[0.02,0.03,0.05,0.11,0.12]';# `+ y3 h, i( A9 X8 `. f6 H
[x,fval,exitflag,output] = fmincon(@(x) myfun( x,t,E,u,c),x0,[],[],aeq,beq,lb,ub,@(x) mycon( x,t,k,E,u,c,R),options)0 v* s' d/ m8 Y: Z9 g
/ @! v$ r" a, r
function f = myfun( x,t,E,u,c )    %目标函数$ J' y8 E( O/ J
%UNTITLED3 Summary of this function goes here  }6 I$ z. ~8 |$ ]# b1 X- c' k5 r
%   Detailed explanation goes here8 a/ S& ~  A9 j- Z# X3 t
f=t*sqrt(x'*E*x)-(u'-c)*x;! ?. K* T/ R- p$ u) n' y$ T- W
end
# d* k- ]: u3 P& v. s
* N/ p! K: p0 nfunction [C,Ceq] = mycon( x,t,k,E,u,c,R )  %非线性约束
/ i1 I1 j( A8 |$ N$ Y0 F# J3 t%UNTITLED4 Summary of this function goes here
  s. X3 w! Y# b5 G9 y8 @8 j. h' \7 a%   Detailed explanation goes here, Y$ X% v8 l# n- x7 u. L
C=t*k*sqrt(x'*E*x)/(t-k)-t*(u'-c)*x/(t-k)+t*R/(t-k);
' C' ~+ [+ h9 v8 CCeq=[];
; F$ h; g7 T/ i) T5 y1 W0 pend
( u4 r7 R7 f  e& @& q2 X: ]# w* _0 @0 o+ ?3 W: D5 r. ?

' }) W, w; z; W' x运行结果:
/ U0 l' }1 S. ^( c5 N4 E7 C5 L' FSolver stopped prematurely.
. H, G$ |2 o) S; yfmincon stopped because it exceeded the function evaluation limit,1 p8 [! {1 T8 r' M& d  A2 n
options.MaxFunEvals = 500 (the default value).- x9 {6 n5 s7 I. d7 y5 G; C/ l
, m: y/ |8 G& H. C. P8 f
x =
. M3 i2 E6 v8 B$ m! |2 y. S( W) @   -0.01754 Q4 D! ~& m3 \4 H; v. p1 l6 _
    0.4875% U! F! R8 u/ w& D: h' M* N2 ?# m
   -0.0175% r1 e3 J' n# Q- C) l2 o  r. C& S' C
    0.3074$ R! @3 T: ~& n3 I/ j1 J3 z
    0.23288 m1 ~: }% r6 B9 z7 T& s0 a" X
: X2 J6 Z% ?8 G9 ]/ B# A
fval =
; u6 p; S) [- J0 n4 l$ a, q   -0.0390
$ V/ T, c2 H* ^
& b2 V8 S8 O/ z& v, [exitflag =+ \8 |- k' b1 }+ c) }3 Y
     0
+ s5 T* h2 [& [
* ]$ Z' H; y! M  \6 d0 l0 d/ Poutput =
$ H$ C, q- m0 b) I/ w, l1 P         iterations: 51! I& ^* k$ \( x( r: M& y8 b
          funcCount: 5054 Q2 P0 S- N, ?* a
       lssteplength: 0.1250
" U4 x, \2 d; A. o4 E7 S  t) Y( _           stepsize: 0.0812, S# g9 f3 N) Z, I( a  z. `, a* o
          algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'1 t9 S( L$ `8 q! P- P: C2 R
      firstorderopt: 2.4732
4 v* L" _6 c6 _, |: _; k( R    constrviolation: 0.0509
% x. S5 `  F" C2 n            message: [1x145 char]* c( [' G2 Y  z$ M3 o" V, H
各位大虾,程序如上所述,为什么函数提前就结束了,是不是要改默认参数设置,小弟也试过,但是捣鼓不出来,希望各位高人不吝赐教,小弟先拜谢了  Orz
作者: zfq12    时间: 2010-5-20 17:38
难哦。。。。。。。。。。。。。。。。。研究研究。。。。。。。。。。。
作者: zfq12    时间: 2010-5-20 17:40
难哦。。。。。。。。。。。。。。。。。研究研究。。。。。。。。。。。
作者: zhangal    时间: 2010-5-20 17:49
不会啊,帮不上》》》》》》》》》》》》》》》》》》》》》》》》》》》》
作者: 亚瑟王的冬瓜    时间: 2010-5-20 20:13
回复 3# zfq12
6 N! c6 L/ g" O3 z& R- R$ ]* H- ^' ^) j- E

4 E7 C0 P- f- _  ~! ]* g    我也试过把lb,ub上下界去掉,结果程序跑了一个上午都还在busy。。。不知何故啊
作者: 火箭发动机    时间: 2011-9-1 20:23
我把maxfunevals 改为1000000,maxiter改为100000,仍是过早结束
作者: alair002    时间: 2012-2-6 08:16
我是新手,所以学习一下,谢了!428456379797383
作者: 韩国福娃    时间: 2012-2-17 01:25
不错不错,值得学习啊!




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5