|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于matlab优化求解的问题请教大家;程序报错截图如下,我分析报错的原因是迭代点(s,d1)改变时,(expect1,expect2)未改变,具体问题描述如下:% k6 h( J4 b; `
1.expect1,expect2是s,d1的函数,当fsolve函数按照优化算法找到新的点(s',d1')时,我的问题里时需要expect1,expect2也变化,这样fsolve的目标函数就也变化了;) e8 ~4 `4 {# g7 {
2.根据上述1的描述,这个优化问题是否应该将(expect1,expect2)也纳入优化求解目标中去?这样该如何实现?/ g7 f M3 l8 @) k$ S0 s7 A
关于这样的编程问题思考了很久也没有编程思路,请求大家给予指导,我在代码中相应部分也对问题进行了表述,如果我的问题没有表述清楚,十分欢迎追问,先谢过大家。
7 I# K9 e* k6 e) U9 Q! h- `clc;
! i: x1 A7 @# J( p+ Z; `clear all;
7 V1 `3 G! ^: l8 s' @# O9 k0 m%%% 赋值外生给定的参数 %%%
; [4 a2 B8 Q+ w" Hwn=0.3;
4 T. x) O( ~* }wt=1-wn;! N; J" s2 K- B* V2 |
r=0.05;
' c2 `' v6 Y0 F% _8 @beta=1/(1+r);
0 ?% J1 C( D5 Y9 U) Repislon=0.05;& n6 s; X; D2 B m
phi=0.3;
* x; Q- V6 z% K5 My1=1;
3 R6 J5 g- o) H7 d1 ]/ d" b5 u! _: V3 ~yn2=1;
0 n, Q" X( ^! b% L- @y2mean=1;$ | T0 {( T. B* p6 `' x' @
y3=1;
0 _. @/ J7 f$ Z* K; F. w. `theta=0.9;7 L3 _# J4 h4 m) G: V, B, R
% d' z$ j7 L% F, ?7 V. @1 o% 赋值(y2,s,d1)
2 N4 B; `, e$ \1 J {y2=0.95:0.01:1.05;# y1 X9 j" k9 T" S# h8 B
s=0.1; %给s,d1的任意初值
, Z6 |9 `" }4 v' j, |, }6 Pd1=0.1;; p2 | t$ i- P
x0 =[s,d1];% ]4 P5 }4 k3 p
, C5 e: \8 z2 ^( k
%在这个for循环里得到均值expect1,expect2,改变(s,d1),均值expect1,expect2也改变9 Q) x2 E1 W( e" g% [3 s' W
9 H7 }3 r+ T) _5 j
for i=1:1:length(y2);
2 ^8 S) I7 \; ^+ N# Xs=0.01;5 \) Z/ f+ W: D1 j3 \. U p
d1=0.1;' Q- o% h [( M5 P5 p" ^7 h+ t
6 @' r& {$ v$ G; ]. q%%% 判断是否紧约束 %%%+ Z- r9 z, R) m: X/ X. S5 A
standard(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));4 a9 ?! U) p2 ~: d* m2 W
check(i)=d1/(1-s);1 N8 B0 A& a+ N% ~. n( U
if check(i)>standard(i): p5 V# ~7 T# }. F+ U8 n
ct2(i)=((1-s)*y2(i)-d1+phi*(1-s)*y2(i))/(1-phi*wn/wt);
' P$ M/ r* r# J$ Y. ?2 k d2(i)=phi*(1+r)*(wn/wt*ct2(i)+(1-s)*y2(i));
! @" C# p6 N* y: v+ |& h ct3(i)=(1-s)*y3-d2(i);
0 g+ L% U4 [4 @1 f& u" @2 @ mu(i)=wt/((1-s)*y2(i)-d1+d2(i)/(1+r))-beta*wt*(1+r)/((1-s)*y3-d2(i));4 E9 l/ T$ Z: B
6 R# X" D7 L7 C& ]6 oelse v! }" C5 l- u& ?" T6 S
ct2(i)=((1-s)*y2(i)-d1+(1-s)*y3/(1+r))/(1+beta);, W' P. w' n% Y2 ?) x* y7 e% M
d2(i)=((1-s)*y3-beta*(1+r)*(1-s)*y2(i)+beta*(1+r)*d1)/(1+beta);
9 S; C$ B6 Y9 T# T7 M3 R ct3(i)=(1-s)*y3-d2(i);
% W" H# E/ z# D% Y# K5 _$ _2 }9 w8 Z7 G! c
mu(i)=0;
" ] [6 X# o, r) _( j1 Lend
/ q/ @* |, j6 F( W3 n) a8 L, e3 A- me1(i)=wt/ct2(i);%每给定一个y2(i),计算得到一个e1(i),e2(i)
% V% Q) k( `1 T6 Y0 d x4 me2(i)=wt/ct2(i)*y2(i)+mu(i)*phi*y2(i)+beta*wt/ct3(i)*y3;# v# A, h( |- p/ v4 I& s* S
1 o4 L" N- @/ D; {. w%%%求均值%%%( I& Z7 G! b* l7 B. y
expect1=mean(e1(1, );
" }% g8 G9 l1 Sexpect2=mean(e2(1, );
$ w. E% k0 c h3 tend3 w6 T0 X. o' g- B" h: ?9 Q
: ]! g- I7 W' H, x( g%我的问题中,expect1,expect2实质上是s,d1的函数
: A/ x$ C. t& D$ |%在用fsolve优化求解的时候,每迭代一个新的(s,d1),都应该运行一次上述for这个循环,得到新的expect1、expect2再进行优化求解,: @# f( S0 y# [4 K# R6 T
%也即(s,d1)变化时,expect1、expect2也要变化,如此fsolve的目标函数也变化* N5 K8 m$ P0 g; w
%这样一个问题没有编程思路,请求大家给予指导,如果我的问题没有表述清楚,十分欢迎追问,谢谢。; C' K6 ~1 H4 z, j$ p
% m' K! P& h$ T[x,fval,exitflag,output,]=fsolve(@(x)foc(x,expect1,expect2),x0);
) f+ Z4 c/ h: X& d& u A
" r6 o; z8 G4 X& J, m5 Z" lfunction f=foc(x,expect1,expect2)2 p: q: j; u2 I* N; I* x+ m+ b
wn=0.3;
: ^( j* W1 D/ S b0 ?wt=1-wn;( a0 E$ y: u* }8 l* U+ {+ Y# E
r=0.05;
" Q6 X5 c9 \! t0 z4 L" P( Z7 Q, Ebeta=1/(1+r);
1 o3 ~* W" c' D6 _ depislon=0.05;
9 R8 U* y* Q! h* ?7 [phi=0.3;
! I' P7 K7 k, P$ ~ \y1=1;
5 C. ^. V- v! X% W' M3 Z4 v, F' Yyn2=1;/ Z( O, K- ]9 P9 E" S, g/ J
y2mean=1;
$ E9 Y. i# q. M9 l8 hy3=1;3 S- m. T" i* Y8 q
theta=0.9;
. W7 P8 P* b9 i; p e* P4 |* E3 Qs=0.01;
3 |) H8 ~2 H- Z! ]0 P% Q+ i: ^- Jd1=0.1;0 ~. k$ r% N! w1 W, z, J' f, r; s
ct1=s*(1-theta)*y1+d1/(1+r);% ct1也与s,d1相关;( t' v( |6 Z$ m0 n9 j) c" w
& I! c. F/ H; s: z4 R
f(1)=wt/ct1-beta*(1+r)*expect1;" \. a. i4 p( v
f(2)=wt/ct1*y1*(1-theta)-beta*expect2;. ?2 y+ Y- C+ Y' Q
end6 }! M1 F9 \% C2 h- h
0 s. ]8 J6 T! t7 T5 V& R& t, ]! P! f ?
|
|