数学建模社区-数学中国
标题:
求助: fmincon的参数问题
[打印本页]
作者:
亚瑟王的冬瓜
时间:
2010-5-20 10:10
标题:
求助: fmincon的参数问题
t=2.3263;
& T. X9 L/ X7 a+ w, D
k=0.5244;
/ k2 m( z& L2 d
R=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 M
E=E/10000;
) b8 N) J5 n" X4 c4 L, h+ K* D
c=0.0075;
4 _1 h% Q7 u% u
options = 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$ w
x0=[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 here
6 `. _ 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 o
Solver stopped prematurely.
! L% z! Y# N8 G- ~) S, N3 E
fmincon stopped because it exceeded the function evaluation limit,
# E! L. {( G* Y5 R' v
options.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.0175
0 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.3074
7 h, i; o: L" O
0.2328
8 o1 S! p' S) d
9 u6 v5 ?5 o S+ s: J( ?3 D+ A
fval =
, D* d) t# }1 f
-0.0390
0 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.0812
3 [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.0509
9 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