|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于matlab优化求解的问题请教大家;程序报错截图如下,我分析报错的原因是迭代点(s,d1)改变时,(expect1,expect2)未改变,具体问题描述如下: D0 T5 Q+ T+ H% q8 h. v0 b$ e
1.expect1,expect2是s,d1的函数,当fsolve函数按照优化算法找到新的点(s',d1')时,我的问题里时需要expect1,expect2也变化,这样fsolve的目标函数就也变化了;
2 \* r8 Q, M3 {4 _2.根据上述1的描述,这个优化问题是否应该将(expect1,expect2)也纳入优化求解目标中去?这样该如何实现?/ i; {% G* y- R1 r# n# R5 Q
clc;
0 ~( {% d# ]9 V6 \clear all;# B: \+ b+ ]" W7 b7 j! d
%%% 赋值外生给定的参数 %%%
, A, T8 T0 \: t1 P; ?wn=0.3;
X9 }, ?8 O1 v# K0 X" Owt=1-wn;
) b5 ~+ c, I5 p' ^# ~7 I Sr=0.05;& d3 ^$ `+ x* O2 J# E& [, ]. G
beta=1/(1+r);
5 s, P' F% j9 Uepislon=0.05; U% u) z u7 P' H2 x9 W
phi=0.3;4 {, G w; u0 r7 I) V5 k
y1=1;: v" x2 E- r) c* b; f
yn2=1;
9 T7 F% z! z; `y2mean=1;
% s Z9 z& L! ` y- @y3=1;
7 s- E( z' X# L, s) Ttheta=0.9;
& V0 t# c$ x+ k) f
/ q2 i3 x9 Y) B2 {
9 f2 j' C" Q4 ^& ~7 k' p' x* \% 赋值(y2,s,d1) 9 M1 v l7 N$ e& e
y2=0.95:0.01:1.05;+ a) x. l2 P" Y# `$ ]9 t: k
s=0.1; %给s,d1的任意初值5 S5 D; {5 C/ a2 n! Q
d1=0.1;; B, `' X& h- \% a4 V/ T; [
x0 =[s,d1];
v1 f! E4 Y; N; {* p& x% N
/ K }$ G( n" `9 f) R
9 R( x: X1 n% x! p/ A%在这个for循环里得到均值expect1,expect2,改变(s,d1),均值expect1,expect2也改变: o2 S! t' G) g& d/ w9 A
! T, \- Z% T( B3 o6 q( O
( t* _: p1 K% j; Vfor i=1:1:length(y2);0 ~' `8 @' `' a8 }
s=0.01;# x! N) j5 y N0 Q5 g
d1=0.1;
2 Q/ d/ m" h# i% Q+ Q
. g4 ~* W0 e/ d1 F6 s ^. p
5 x4 q: w }9 @%%% 判断是否紧约束 %%%! G1 L" N0 h8 v0 K3 M9 s2 e
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));
" J# ]0 q. ` s& pcheck(i)=d1/(1-s);1 l. Q6 B1 a5 ^" g2 i' b
if check(i)>standard(i), b$ R0 c6 n- d7 n+ z
ct2(i)=((1-s)*y2(i)-d1+phi*(1-s)*y2(i))/(1-phi*wn/wt);
0 C( O1 j2 G. m8 z% H5 n. s% F; [ d2(i)=phi*(1+r)*(wn/wt*ct2(i)+(1-s)*y2(i));. G( q. c, F6 M) I& Q
ct3(i)=(1-s)*y3-d2(i);
& u, A9 `: Z* A& ~' @* ~, l mu(i)=wt/((1-s)*y2(i)-d1+d2(i)/(1+r))-beta*wt*(1+r)/((1-s)*y3-d2(i));
0 {) P/ G% B, ^ A: n1 q
$ y# c. I H }* {3 _$ `else
$ n; e4 r9 |% [6 H/ p$ X8 Y ct2(i)=((1-s)*y2(i)-d1+(1-s)*y3/(1+r))/(1+beta);
/ i, {: E9 \9 H0 ` d2(i)=((1-s)*y3-beta*(1+r)*(1-s)*y2(i)+beta*(1+r)*d1)/(1+beta);( r! [# i V) x: M5 l
ct3(i)=(1-s)*y3-d2(i);2 B( @1 W# J5 t5 W+ ^
1 m' P6 |$ I$ q3 y7 q5 L! h0 m
$ \/ p, O- f. W( ?/ Z mu(i)=0;; _% Y! w% O2 ]7 C
end+ p* @/ q# ?( m
e1(i)=wt/ct2(i);%每给定一个y2(i),计算得到一个e1(i),e2(i)
- y! o& W' q! n3 K; o( te2(i)=wt/ct2(i)*y2(i)+mu(i)*phi*y2(i)+beta*wt/ct3(i)*y3;
% k6 l5 D! [% L: \ j/ {, Q1 m$ S i' F" |) ]" `* D
7 {/ p' e5 ]: E }
%%%求均值%%%- m1 C) U" @. d* w; d& e
expect1=mean(e1(1,:)); # d/ D/ @9 M" |6 ?
expect2=mean(e2(1,:));
5 y6 o% d! {/ z( Oend, g+ J7 G& t X9 W* B9 A% `& A
0 Q$ b0 [9 w$ T3 m7 X
) c# @7 x3 e. u* q%我的问题中,expect1,expect2实质上是s,d1的函数! T+ E8 G+ V$ a
%在用fsolve优化求解的时候,每迭代一个新的(s,d1),都应该运行一次上述for这个循环,得到新的expect1、expect2再进行优化求解,
+ V) z+ E& S6 U$ u- Z; C" S% K, M%也即(s,d1)变化时,expect1、expect2也要变化,如此fsolve的目标函数也变化) X# P0 T1 X. ~
%这样一个问题没有编程思路,请求大家给予指导,如果我的问题没有表述清楚,十分欢迎追问,谢谢。
1 e. v) u; s6 V ^ |# O2 c/ o* W7 B: W
2 i R8 e9 N J# B; A# }8 y* H" S$ G8 V/ u$ y% v7 Y
[x,fval,exitflag,output,]=fsolve(@(x)foc(x,expect1,expect2),x0);
) r. @; |6 z( x; c* M! M, E! J. y0 K. r! {4 k& g1 N
1 x1 k0 r4 M3 F7 H0 l- t7 Vfunction f=foc(x,expect1,expect2)
) Z+ j6 r+ c0 F y/ Bwn=0.3;$ C$ m- f: `7 {6 ]; ]* A
wt=1-wn;
4 Z8 R( j n/ Y9 S, G: Kr=0.05;
, g5 j- Z' {+ T* v, Y I2 gbeta=1/(1+r);/ @# |4 f! J' C+ B1 s, r
epislon=0.05;
9 r3 S; V4 f1 s+ l( l' e( Ophi=0.3;$ O6 m; u) o: X' V7 k
y1=1;. y0 l8 G( M: z J3 I% d
yn2=1;
, h/ n3 R1 W) b9 [. z. y( ry2mean=1;
/ y( ~3 X4 u. v: p- Vy3=1;
, J0 @& ^9 D) c4 wtheta=0.9;8 I8 K" X! }. l; C+ N! J
s=0.01;
1 J4 I( N/ [+ V% Fd1=0.1;
, P4 c0 t9 | q, {5 l* C' lct1=s*(1-theta)*y1+d1/(1+r);% ct1也与s,d1相关;
& Q$ A. b, w, H
- t) A8 _+ u7 m+ S, U" k
0 F0 j: ?; W8 @; C8 Ff(1)=wt/ct1-beta*(1+r)*expect1;* i, J( K% ]! z8 g9 f8 k
f(2)=wt/ct1*y1*(1-theta)-beta*expect2;
u. s9 b* ^0 Y# t7 _9 {% [- jend
& O0 F- z. z, g$ t$ Z$ j
( @9 W J. |5 ~
. V" M6 { _7 m' J: P |
|