数学建模社区-数学中国

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

作者: 亚瑟王的冬瓜    时间: 2010-5-20 10:10
标题: 求助: fmincon的参数问题
t=2.3263;
& T. X9 L/ X7 a+ w, Dk=0.5244;
/ k2 m( z& L2 dR=0.15;7 i! n% K5 L  M& n% ~* n& }5 q
u=[0.1221,0.1786,0.1452,0.1054,0.1132]';& D& v1 Q: x6 L7 [
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];
% e" V9 t4 [: ~6 c7 L2 ME=E/10000;
) b8 N) J5 n" X4 c4 L, h+ K* Dc=0.0075;
4 _1 h% Q7 u% uoptions = optimset('Algorithm','active-set'); % run active-set algorithm
+ g  g2 G/ `7 ]# \0 [aeq=[1+c,1+c,1+c,1+c,1+c];
2 K0 S1 j3 b4 V. J3 {beq=1;& R; J5 J# Q9 B! C" d8 d
lb=[0,0,0,0,0]';
$ G6 R5 O6 \1 b  ~, t  n8 _ub=[1,1,1,1,1]';
9 _6 p) s4 v+ j$ wx0=[0.02,0.03,0.05,0.11,0.12]';) h4 Z! h# w, s$ I% U! N
[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)5 F0 b3 i  b+ W4 h/ ^( f3 N3 r
9 d' G/ ]  l* Q8 c/ ^! x; f, l
function f = myfun( x,t,E,u,c )    %目标函数
1 T* ]9 c: C& l7 v4 B* p% j5 a%UNTITLED3 Summary of this function goes here
4 T# x3 ]9 T  Z1 v%   Detailed explanation goes here6 `. _  j2 |& G7 f, [
f=t*sqrt(x'*E*x)-(u'-c)*x;6 q: }# p$ j, ^2 M; Y/ x8 r7 Q) j
end
0 h8 A2 Z1 p' Y  W, ~! G- }/ y" R9 u5 `) ~! c; y+ y
function [C,Ceq] = mycon( x,t,k,E,u,c,R )  %非线性约束; A# `& `0 Q( Y- y. p; j; z& Q" T
%UNTITLED4 Summary of this function goes here
* @$ Z8 A# E: g0 _, ]%   Detailed explanation goes here% v* {! e. g1 u* R4 I+ n
C=t*k*sqrt(x'*E*x)/(t-k)-t*(u'-c)*x/(t-k)+t*R/(t-k);* I1 n, V% }7 Z8 n- B1 `) N4 Q: Q! g
Ceq=[];' o: f) ^3 ~2 F6 o- i( ~+ U# p! @
end
" V/ w' ?! ^9 w+ g: {4 Y% B4 ?
2 s" v( s+ |5 j
8 u7 \# G: Y0 m: w运行结果:
0 N4 z5 ?, d6 ~- q7 \& N5 oSolver stopped prematurely.! L% z! Y# N8 G- ~) S, N3 E
fmincon stopped because it exceeded the function evaluation limit,
# E! L. {( G* Y5 R' voptions.MaxFunEvals = 500 (the default value).) o. q% ^, u. z. @
  n7 ~. J3 e+ Y% Q- p/ v
x =
, _7 R) A0 m- k+ X/ X6 i   -0.01750 F) r- L9 u$ P) W0 `
    0.4875
' t; W8 Z# U; D+ h: `- X. j   -0.0175
6 ~, T2 Y" D3 x" j' o. {: {3 ]    0.30747 h, i; o: L" O
    0.23288 o1 S! p' S) d

9 u6 v5 ?5 o  S+ s: J( ?3 D+ Afval =, D* d) t# }1 f
   -0.03900 O8 Q$ m4 L- o6 e& y, o

* r( b; Q0 P- A& s4 ?  ?exitflag =
" t" m5 c5 Q& o7 E     0
- w9 A4 @7 V4 }) C3 r7 K$ J' g% V, \7 w0 Q. b( A* E
output =
& d( |, q$ s, ^/ V# z" T( W) ^         iterations: 51
4 o- P6 Z$ L% N$ i6 ?          funcCount: 505
. V( N4 u. `2 C; p& z3 R, n  J) p" {       lssteplength: 0.1250
$ c% k8 P1 m/ c/ j           stepsize: 0.08123 [0 M9 }! b# _1 {- B3 ?8 D
          algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'
/ Z8 K! A  A" P  p2 P# Y  }6 ^9 O      firstorderopt: 2.4732
4 s8 _1 g$ |3 n    constrviolation: 0.05099 U4 k0 R/ P$ g
            message: [1x145 char]- p9 M+ n. ]2 u# {" N/ _, _
各位大虾,程序如上所述,为什么函数提前就结束了,是不是要改默认参数设置,小弟也试过,但是捣鼓不出来,希望各位高人不吝赐教,小弟先拜谢了  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
. C9 P. R5 j) t% C8 ~; K/ v8 U0 J/ v2 T) T5 u$ D" m% r
9 Y) t  Q. ~; p: Z5 L
    我也试过把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