|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于matlab优化求解的问题请教大家;程序报错截图如下,我分析报错的原因是迭代点(s,d1)改变时,(expect1,expect2)未改变,具体问题描述如下:
e) R, F4 d0 e. \9 j1.expect1,expect2是s,d1的函数,当fsolve函数按照优化算法找到新的点(s',d1')时,我的问题里时需要expect1,expect2也变化,这样fsolve的目标函数就也变化了;
" ^. E* ], v- B Z2.根据上述1的描述,这个优化问题是否应该将(expect1,expect2)也纳入优化求解目标中去?这样该如何实现?- t" v$ M7 R% L
关于这样的编程问题思考了很久也没有编程思路,请求大家给予指导,我在代码中相应部分也对问题进行了表述,如果我的问题没有表述清楚,十分欢迎追问,先谢过大家。
. J- c7 b/ s' O/ z, Uclc;
" n5 I9 C' G5 @6 A3 y- iclear all;6 g5 g" |8 W) F; I1 Q
%%% 赋值外生给定的参数 %%%
4 `3 e+ j4 F" A8 T/ s5 o9 ^" Vwn=0.3;
/ m) Q6 R3 R6 B+ u! T; q! dwt=1-wn;4 s! H6 K5 d. p" i* J* ?1 a9 C
r=0.05;( b( u; \/ W0 Q" I) A+ R' f
beta=1/(1+r);+ u0 w, y/ ~5 [) n9 \/ ^
epislon=0.05;
& s( J1 [! ]4 h8 J1 r1 Ophi=0.3;
1 x0 D) C+ |9 @- D& ~y1=1;
) j1 l/ c, v& r2 t1 W5 O2 j) Nyn2=1;
' W4 S! _% x Q! e/ }; [& Cy2mean=1;
5 v- x6 Z2 z6 ~* Q6 D1 K$ D; ay3=1;7 Q$ q" ^+ @1 F% S; Z
theta=0.9;
$ e2 K& f. y8 q" w7 l; y" p
" j/ g& b! j2 a9 f# |- x% 赋值(y2,s,d1) ' v) o) r6 c% M0 H/ S
y2=0.95:0.01:1.05;
9 v+ T) q1 Q) b8 t6 K/ bs=0.1; %给s,d1的任意初值# s% B. N+ F, a( i4 _2 o
d1=0.1;& ^. D* f- z! b2 [% Q5 H
x0 =[s,d1];: X) {7 B* k/ w% g; {
) `) N' v2 d4 N- p9 I%在这个for循环里得到均值expect1,expect2,改变(s,d1),均值expect1,expect2也改变- Y* a( j1 J1 M* M( i
, Z0 z! A7 ~/ m r3 v. N
for i=1:1:length(y2);
5 Q+ |1 J: P+ d1 d# n5 R8 ~7 Rs=0.01;
5 N4 ]6 E H' p0 Z# z6 M" nd1=0.1;. p3 O1 W7 }' B+ d* ]" Z" a
% y; K% B6 ~5 Y5 ?* S5 p3 `7 d%%% 判断是否紧约束 %%%
0 p- Y R$ p: Y/ } {5 K4 ustandard(i)=y2(i)*((beta/(1+beta)+phi/wt/(1-phi*wn/wt))-y3/((1+beta)*(1+r)))/(beta/(1+beta)+phi*wn/wt/(1-phi*wn/wt));
8 W( r/ { v. h1 O! f4 z2 V; o5 e6 fcheck(i)=d1/(1-s);) c6 N( N' J9 u1 I" k0 d
if check(i)>standard(i)# D/ w$ G: V- h
ct2(i)=((1-s)*y2(i)-d1+phi*(1-s)*y2(i))/(1-phi*wn/wt);. I+ P H! y# E
d2(i)=phi*(1+r)*(wn/wt*ct2(i)+(1-s)*y2(i));
2 I8 i' a0 f9 l9 j" x3 P* a( z ct3(i)=(1-s)*y3-d2(i);
t0 z. @; Q& a. h1 e; S+ n: S mu(i)=wt/((1-s)*y2(i)-d1+d2(i)/(1+r))-beta*wt*(1+r)/((1-s)*y3-d2(i));
+ R6 u1 C5 V2 T1 U+ N, U g) i+ ]! e- P
else
a7 t) Z6 j* M+ Z; s) L B ct2(i)=((1-s)*y2(i)-d1+(1-s)*y3/(1+r))/(1+beta);. T4 ]% \( M) g1 t1 w# {
d2(i)=((1-s)*y3-beta*(1+r)*(1-s)*y2(i)+beta*(1+r)*d1)/(1+beta);
w" p6 E: d* z' Q& N/ o. B ct3(i)=(1-s)*y3-d2(i);
3 J/ ~" I3 z- @& W
2 P- s+ p" e+ K R( u3 R: J mu(i)=0;
1 ^! t1 G# l) |8 \, L* q9 ?end8 @4 h* C) l% N& X" E1 Y) \5 X
e1(i)=wt/ct2(i);%每给定一个y2(i),计算得到一个e1(i),e2(i): d' @" q+ O5 y$ c5 r& g" ]- e0 U, |
e2(i)=wt/ct2(i)*y2(i)+mu(i)*phi*y2(i)+beta*wt/ct3(i)*y3;
' M* V% h3 I( \
$ } |* D% y& n$ ?%%%求均值%%%6 h6 a- K: d: g* [9 k5 a8 a& |
expect1=mean(e1(1, );
. N |7 r6 v( F; G' t) e/ l" rexpect2=mean(e2(1, );: n1 A8 J7 ?& p( K& Q4 P0 Z
end
( Q5 Y* N( Q6 u2 h. z
/ }+ M1 _) {5 X%我的问题中,expect1,expect2实质上是s,d1的函数
+ W6 J4 k2 T8 Y4 h& I* a* ~6 S T%在用fsolve优化求解的时候,每迭代一个新的(s,d1),都应该运行一次上述for这个循环,得到新的expect1、expect2再进行优化求解,
8 }" I, B: L5 \4 U%也即(s,d1)变化时,expect1、expect2也要变化,如此fsolve的目标函数也变化: k5 p( `6 b' H O
%这样一个问题没有编程思路,请求大家给予指导,如果我的问题没有表述清楚,十分欢迎追问,谢谢。9 T4 t9 m+ S% `# k/ p j
4 T* N5 ?. s0 X* z[x,fval,exitflag,output,]=fsolve(@(x)foc(x,expect1,expect2),x0);
X" T! ]# A; y7 U4 t
4 y+ c- x3 d+ ]4 _( y6 r# X- Vfunction f=foc(x,expect1,expect2)! X9 ^4 m; f! M& k
wn=0.3;
: s/ I9 p( L' m! g5 S8 cwt=1-wn;3 ~" {, U9 t4 M3 E
r=0.05;
P `/ ~7 z v7 v9 B3 I. E( qbeta=1/(1+r);7 ^! U% n6 t* N4 A
epislon=0.05;
# ]( {1 e0 I) f$ ]3 M) U* hphi=0.3;
4 b3 r% i9 Q6 `! h2 \y1=1;
1 P1 A! @$ ?2 L2 g1 _% E Uyn2=1;
: z8 a& w( v# B& P# i0 c9 k1 Hy2mean=1;! c1 M8 T' n1 c. ^) s
y3=1; v# \! Z$ s1 w- E7 U/ ]
theta=0.9;
4 Z8 e- A$ ~9 a9 S/ ^7 ys=0.01;
! V4 H4 B3 I: R+ Ed1=0.1;
3 x" e% h r, C6 ^, Xct1=s*(1-theta)*y1+d1/(1+r);% ct1也与s,d1相关;" z6 ^* b z: P: s( ^, z! g4 Z% r
8 r; {, ~( X) q; X3 w+ ]1 J0 Qf(1)=wt/ct1-beta*(1+r)*expect1;! H% w3 @0 H; k. ~% D! D" _
f(2)=wt/ct1*y1*(1-theta)-beta*expect2;0 ?, ?0 r/ v3 `3 S8 v) c
end
* p) j9 D4 v5 a& _, J% K4 Q
+ p% F* }! d3 G# r5 `( _1 ~
- U, V% Q, z! l1 W0 e |
|