|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于matlab优化求解的问题请教大家;程序报错截图如下,我分析报错的原因是迭代点(s,d1)改变时,(expect1,expect2)未改变,具体问题描述如下:2 c; p" \$ b$ T5 l6 t& B' M
1.expect1,expect2是s,d1的函数,当fsolve函数按照优化算法找到新的点(s',d1')时,我的问题里时需要expect1,expect2也变化,这样fsolve的目标函数就也变化了;
% h7 C" K Z$ Q! [) U1 j% F$ N2.根据上述1的描述,这个优化问题是否应该将(expect1,expect2)也纳入优化求解目标中去?这样该如何实现?
9 S$ z$ s8 H4 J! y0 `( Vclc;- p: T- p0 D0 n9 T
clear all;
- w7 f" h* X4 o/ [! G: b$ v% J%%% 赋值外生给定的参数 %%%
: p; C0 }1 u8 }% Twn=0.3;
$ ^7 `5 {, [8 T5 S7 b. {" m2 v* cwt=1-wn;
, e8 [1 t1 O& v5 g+ Rr=0.05;0 b `5 T B# {2 E9 J' J) y) u
beta=1/(1+r);. d; U" p9 B9 G5 [ Y
epislon=0.05;
# _% ?) Q8 @9 T+ Z$ H$ t2 zphi=0.3;0 t- i& k* n. n) ?1 y
y1=1;% z }% E ~, B" t9 l7 k
yn2=1;* t n4 H+ H$ Z: Z. i
y2mean=1;
+ ^0 u# R. C: Xy3=1;8 o' W0 C0 V! c
theta=0.9;& F1 E+ [( U3 Z( \! m' A, D
; s; M9 ^0 ~. F# @6 Z7 u. T
4 j# `8 x7 J+ H( l% 赋值(y2,s,d1) , ?; X+ |( ]: Z" R5 J
y2=0.95:0.01:1.05;, `& U, a# j5 H; A( W g) x( @
s=0.1; %给s,d1的任意初值
0 f P, c# T2 g, m! v! vd1=0.1;
7 y# J) A6 U; k% ]# rx0 =[s,d1];
( h, O0 U8 f7 o9 E% n2 f) g) T- u) { H
! e, s2 o8 O# u9 g
%在这个for循环里得到均值expect1,expect2,改变(s,d1),均值expect1,expect2也改变
# g) p% S4 ` ?! @" Q; m
: K% x# B1 @$ ^$ C
5 X. `- \' N1 P2 ^6 zfor i=1:1:length(y2);8 i6 B1 G$ \" G( `
s=0.01;: q) G* b. B g7 p2 f
d1=0.1;8 {" g6 V% O7 f6 F0 H, q
$ M5 y, T; |2 V# J1 N h
# r% p% Y c# w1 I' w%%% 判断是否紧约束 %%%: P5 ?" H' z# P! k' [+ V
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));
7 b% J& [2 m5 Y" ncheck(i)=d1/(1-s);! j" {$ P# }: c1 y- d7 \+ x
if check(i)>standard(i)
) s4 s& x- N7 f; X& z ct2(i)=((1-s)*y2(i)-d1+phi*(1-s)*y2(i))/(1-phi*wn/wt);( Q3 \3 N. H6 U% {$ H
d2(i)=phi*(1+r)*(wn/wt*ct2(i)+(1-s)*y2(i));7 T/ k: y. o/ P/ D' t
ct3(i)=(1-s)*y3-d2(i);
. V4 s" e0 b3 v6 S" j% N) Z mu(i)=wt/((1-s)*y2(i)-d1+d2(i)/(1+r))-beta*wt*(1+r)/((1-s)*y3-d2(i));
* `2 [) N8 {8 B$ b# Y2 z# C. \
8 ~: |# ]4 ^+ c8 B' C% yelse* J! ?$ f9 x( S2 q( v; l* {
ct2(i)=((1-s)*y2(i)-d1+(1-s)*y3/(1+r))/(1+beta);2 f1 N+ ~% i7 W7 t
d2(i)=((1-s)*y3-beta*(1+r)*(1-s)*y2(i)+beta*(1+r)*d1)/(1+beta);
; Z1 l5 r. k K; W/ @ ct3(i)=(1-s)*y3-d2(i);2 Y) k0 p h: a9 h0 g0 _0 g! y
# K4 c5 L& _$ v0 P1 ?- Y7 U/ u
9 M, y" x5 Q" C# t mu(i)=0;
9 x* y0 Z. T. P0 Cend& q4 n7 C: g& i. j; U0 }
e1(i)=wt/ct2(i);%每给定一个y2(i),计算得到一个e1(i),e2(i)4 o, [9 v9 x( v
e2(i)=wt/ct2(i)*y2(i)+mu(i)*phi*y2(i)+beta*wt/ct3(i)*y3;
! C2 w3 a- s) Y0 G2 D) i" _$ p7 k$ Z) W+ T% |
1 m/ V. L# m( c) U%%%求均值%%%
# j* C3 k0 M- J# |- r' I: Vexpect1=mean(e1(1,:));
v6 F$ C# i, s& k! Z8 W( H+ eexpect2=mean(e2(1,:));
0 h# a% D1 ?$ {end
* H# i0 e, E( I& w. E
, U# X2 C' o# B$ C6 t* w2 K7 Y5 y. |% w
%我的问题中,expect1,expect2实质上是s,d1的函数2 H- ^1 s& @9 ~5 O( v
%在用fsolve优化求解的时候,每迭代一个新的(s,d1),都应该运行一次上述for这个循环,得到新的expect1、expect2再进行优化求解,. s$ ]' V. l! [, C5 A }" o
%也即(s,d1)变化时,expect1、expect2也要变化,如此fsolve的目标函数也变化% a8 U; T1 z2 W. H8 W
%这样一个问题没有编程思路,请求大家给予指导,如果我的问题没有表述清楚,十分欢迎追问,谢谢。. h) C6 f- k0 x; x9 [
/ ?3 z. n# o, S9 h2 |$ N |$ k
0 m+ l+ o3 a" K[x,fval,exitflag,output,]=fsolve(@(x)foc(x,expect1,expect2),x0);
0 x4 l6 L7 j, m2 G/ o3 K q" G2 t' F: g" M/ q5 o
4 W; L. q( z) d9 c# M% A A
function f=foc(x,expect1,expect2)
! L, L, Y: f: U1 F1 k ?/ uwn=0.3;7 ?# c! u7 p* x/ R7 B' |2 y
wt=1-wn;
* A, z' I* t# n, Sr=0.05;' O2 l) J" `8 b8 {! u, H( e u
beta=1/(1+r);
9 l4 f% I% s! B6 Bepislon=0.05;( [: ?% c- F% `6 y' ^% P+ L
phi=0.3;) L* J2 u+ k* r4 p
y1=1;
# m# _- g& ^2 Lyn2=1;
7 `+ d0 M9 E$ M: i" x x p0 gy2mean=1;, p+ }$ g; K8 K; z. P, A
y3=1;4 h6 z3 W0 K, Q1 d0 \+ _; [
theta=0.9;
- U5 Q* M$ w+ n3 R. d! ss=0.01;: M1 B* k4 s- A# ?
d1=0.1;
+ r9 b: ]/ H' z. ~: }* L8 Lct1=s*(1-theta)*y1+d1/(1+r);% ct1也与s,d1相关;
+ K: Q& T' o1 e0 _: Y' ~, U2 m- |. {) ~, y8 @
" j" [8 V" t! O" ~' e7 C
f(1)=wt/ct1-beta*(1+r)*expect1;2 U6 v( ^/ F' a# S
f(2)=wt/ct1*y1*(1-theta)-beta*expect2;1 S9 a" ?( d" h! R( @1 a
end) ^9 @+ J" s& ?3 q
( ?; m0 e m3 u* u9 s9 e
$ u4 {1 }6 [5 E+ H |
|