|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于matlab优化求解的问题请教大家;程序报错截图如下,我分析报错的原因是迭代点(s,d1)改变时,(expect1,expect2)未改变,具体问题描述如下:8 W. O: M* i8 x
1.expect1,expect2是s,d1的函数,当fsolve函数按照优化算法找到新的点(s',d1')时,我的问题里时需要expect1,expect2也变化,这样fsolve的目标函数就也变化了;
+ C* z, G6 D9 e% k: ?& [4 v% |8 n2.根据上述1的描述,这个优化问题是否应该将(expect1,expect2)也纳入优化求解目标中去?这样该如何实现?
) ] X8 b9 n; U- B0 ^clc;9 _3 K8 y2 K! p6 \% b) L; g
clear all;
: m$ _+ Q9 W7 ?- R%%% 赋值外生给定的参数 %%%
; @/ O5 I1 M# E8 L) ~wn=0.3;% J( c6 M6 }" Q3 O$ C$ m) t* Y7 M) D
wt=1-wn;; J ?! w u4 R* a1 }
r=0.05;
4 K9 b! B/ D; W5 X0 A+ pbeta=1/(1+r);
3 Y( H8 ]* m8 T" u, b0 Sepislon=0.05;( b5 d2 G# Q& T; X
phi=0.3;
. @" A" h, R8 Y Q" E2 r) \y1=1;5 c$ n" i0 C) Z k$ W, k
yn2=1;
- `4 P- d6 e: F9 F) G c9 yy2mean=1;
$ h4 h7 }6 z6 ~4 x6 Dy3=1;
* i& r' v6 c# ]/ _/ htheta=0.9;5 E7 H" ^6 b& `5 O$ ~( y$ Y5 r
1 U3 P6 f% A- F& ?! Q4 x
2 b' ]: a% b6 V" W$ Z% 赋值(y2,s,d1)
, `' h/ P9 C2 u6 Cy2=0.95:0.01:1.05;
( u! a" A: g, A, C0 ks=0.1; %给s,d1的任意初值' w: y4 @) P# C& e
d1=0.1;: t8 {' Y7 s7 N; ^
x0 =[s,d1];
8 \% c8 a9 }+ f! [6 t% R) Q
: f) v8 h3 ^' w8 a( o
- i- r* x( ^! \7 _ @( T%在这个for循环里得到均值expect1,expect2,改变(s,d1),均值expect1,expect2也改变
8 a. o0 e+ s* k0 J$ v
! s5 {. [8 X& d" z( f2 @7 R6 {' z/ a( J
for i=1:1:length(y2);
/ B3 v+ c, D3 Q/ l/ y0 is=0.01;8 X/ X# Y) [: J2 J
d1=0.1;
7 E1 a! Y6 ~+ |+ X/ l' E
1 ^2 b) E. j8 `! n. \* w) Q: O& X* N) f( u
%%% 判断是否紧约束 %%%
9 n( P9 {8 {3 O) P; Pstandard(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));
' }" B& e+ p3 K, e, o/ e% Rcheck(i)=d1/(1-s);
3 l+ K1 y4 w5 Bif check(i)>standard(i)
7 ^1 E/ f4 I& Q1 l ct2(i)=((1-s)*y2(i)-d1+phi*(1-s)*y2(i))/(1-phi*wn/wt);9 Q4 T! l0 I+ V0 w* I& P
d2(i)=phi*(1+r)*(wn/wt*ct2(i)+(1-s)*y2(i));" P% B3 }: ~% J. Y( c2 V
ct3(i)=(1-s)*y3-d2(i);) ]7 t8 P# q! ?8 A! r# }
mu(i)=wt/((1-s)*y2(i)-d1+d2(i)/(1+r))-beta*wt*(1+r)/((1-s)*y3-d2(i));
; ]6 t0 g+ [0 B$ A6 r/ T ( J* l! w. ^7 p- |; ]
else
. H) R& C% X! L4 e1 n ct2(i)=((1-s)*y2(i)-d1+(1-s)*y3/(1+r))/(1+beta);5 _: C: `! z2 N. j+ c6 I6 ]
d2(i)=((1-s)*y3-beta*(1+r)*(1-s)*y2(i)+beta*(1+r)*d1)/(1+beta);+ R1 z3 `/ W; {1 i
ct3(i)=(1-s)*y3-d2(i);
. g+ O) B: y' Q( B, c
3 |3 X+ n8 F( \% |& x0 X8 b( X$ K5 ]4 J8 U" L/ v' l8 @& k
mu(i)=0;
( b+ C6 Y/ J8 s v' Y6 H2 B s6 r/ Zend0 z0 h- C. `1 o6 A3 D/ z- w. {
e1(i)=wt/ct2(i);%每给定一个y2(i),计算得到一个e1(i),e2(i)
1 W l# l/ F1 x N/ Oe2(i)=wt/ct2(i)*y2(i)+mu(i)*phi*y2(i)+beta*wt/ct3(i)*y3;
4 p, a/ F q" |* Z% B% |: t/ e" A0 R
$ x! f, r; q% I. Z%%%求均值%%%
, A$ W" r' [ k" c7 t: k5 G6 ^expect1=mean(e1(1,:));
8 U' @" ~+ c- [: K) Nexpect2=mean(e2(1,:));4 T* H$ f3 |% `1 I
end
% G) x, L- g: @- h1 \, t
% k# X3 C' i- M% h6 I7 Z
+ g; t/ u2 F+ m" ~2 w' |3 k%我的问题中,expect1,expect2实质上是s,d1的函数3 o0 g/ }9 D1 c8 b1 k
%在用fsolve优化求解的时候,每迭代一个新的(s,d1),都应该运行一次上述for这个循环,得到新的expect1、expect2再进行优化求解,# o! s6 A8 n3 p' S
%也即(s,d1)变化时,expect1、expect2也要变化,如此fsolve的目标函数也变化- y0 C& G* Y9 a9 C
%这样一个问题没有编程思路,请求大家给予指导,如果我的问题没有表述清楚,十分欢迎追问,谢谢。
: b: X5 A( n7 g3 Y. \! W" ]1 G' M" s# c3 [$ S' `3 u! X+ [
! \1 O! ^5 o" _5 z[x,fval,exitflag,output,]=fsolve(@(x)foc(x,expect1,expect2),x0);+ L' e. f% T g }
, E% `, t' J# T I8 Y! J) J
f: v/ P! p9 u6 m9 [# |function f=foc(x,expect1,expect2)
: R0 L' c0 p) o' fwn=0.3;
0 X4 \" y2 g5 d4 B' b6 ewt=1-wn;$ k1 A+ ]; g2 R3 L. W( C8 M
r=0.05;
; I. D3 @ B1 L- R- T' ibeta=1/(1+r);
1 J7 D% j- v. Q; yepislon=0.05;
+ U# C& j! ^; M2 A& I# {0 lphi=0.3;
, B& ^: ?- Q" B# }7 N' |y1=1;
( c% }0 ]6 ?; [4 D, @/ vyn2=1;
! }& ] M& }! g! n! t0 H: i+ O4 {& }y2mean=1;
9 ^0 M+ v, e8 e3 Sy3=1;3 r$ \/ Z3 N' ]% K
theta=0.9;$ Z$ n2 \$ C ?# f4 W* x
s=0.01;
1 w' |5 j& Q1 @7 F7 Xd1=0.1;
7 ~* W2 a' h2 b, Vct1=s*(1-theta)*y1+d1/(1+r);% ct1也与s,d1相关;' X; o* p8 T+ n% }+ A- E9 g( X7 n
0 g8 B( F6 Q( k) b5 N7 l
# {$ K( v0 S* Mf(1)=wt/ct1-beta*(1+r)*expect1;/ u+ u* r3 i% o7 K
f(2)=wt/ct1*y1*(1-theta)-beta*expect2;+ y) `# Q. s! ~) I1 N
end
: h, g9 @! B& i: g0 z* A) D
. H4 E% ?) h6 n7 t
: u& R8 W% ?7 n* I4 ?$ ?& ~
|
|