EDA365电子论坛网

标题: matlab优化求解的问题 [打印本页]

作者: Uifhjvv    时间: 2021-1-11 11:04
标题: matlab优化求解的问题
关于matlab优化求解的问题请教大家;程序报错截图如下,我分析报错的原因是迭代点(s,d1)改变时,(expect1,expect2)未改变,具体问题描述如下:
6 w& ]: |+ P+ |' q1.expect1,expect2是s,d1的函数,当fsolve函数按照优化算法找到新的点(s',d1')时,我的问题里时需要expect1,expect2也变化,这样fsolve的目标函数就也变化了;. N/ i% O- j& O+ C3 o, H5 k  b
2.根据上述1的描述,这个优化问题是否应该将(expect1,expect2)也纳入优化求解目标中去?这样该如何实现?
# U6 [, O" O! `! m7 ~clc;% |. B5 y$ `$ h7 P  ]5 M/ i
clear all;
% Q, y1 Q) N6 `2 ~0 g6 f' @  M%%%  赋值外生给定的参数  %%%
( X; b- i, r  O9 k, A* ^: ]' J9 gwn=0.3;( G/ Y' {( _1 _  ]0 J
wt=1-wn;
. _  q0 ?' Q" L  U& R- yr=0.05;- S+ T& _) l' N. J( y! B' a3 d
beta=1/(1+r);3 `2 c8 Q0 I9 Q7 Y; v
epislon=0.05;
. i4 Y( x8 o3 r3 q; w( i: L# P: Dphi=0.3;
. V1 D' p0 A* My1=1;
1 y2 W# P# {! i( Y# F2 Yyn2=1;7 n% [" _, ]  Q9 }6 E/ l! y' G
y2mean=1;
, p: h* }$ ^4 l& oy3=1;
& g  n7 W( E* L- W- m$ y. U. l8 Etheta=0.9;
2 p6 T9 F( }$ F! G
1 e- M" ~8 S, F# q+ ~

0 R9 B, |' a' P$ p, ^5 O% 赋值(y2,s,d1) & Y. O% x1 u) D) G) X2 Q) a4 I
y2=0.95:0.01:1.05;
: {  T/ I% W6 l/ M( S* `0 w+ c7 Ks=0.1; %给s,d1的任意初值
3 F5 w, V4 h' w6 ?3 X; e% D3 Qd1=0.1;+ t/ d/ Z4 a' _0 v
x0 =[s,d1];1 {7 T$ _) C8 s! ?: b; H
* ~& O4 w9 [2 M; d+ [' d
/ ]. u5 _# a# @7 F9 h9 o* Y) C
%在这个for循环里得到均值expect1,expect2,改变(s,d1),均值expect1,expect2也改变
2 c, ?9 ?! n) d4 K* w. v' F1 B' l" b% ~$ [

2 a; O2 ]# i! W, Dfor i=1:1:length(y2);6 o+ a8 J2 ^! M! I
s=0.01;8 A2 @/ h8 t+ K+ `1 r8 h
d1=0.1;
8 i( r, `7 P# ]* _2 H+ d1 V& f
; Y! L% n2 U3 D# D" @& W) V' n( A
4 r" I8 O$ ]) Z% H6 I3 O
%%% 判断是否紧约束 %%%
* g$ f7 k& b# Q9 Wstandard(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));3 |8 u  c; _. O5 o1 ~
check(i)=d1/(1-s);4 c, Z& {$ \0 W$ u9 `% @
if check(i)>standard(i)( N4 E$ U+ Z3 |* t; C+ t
    ct2(i)=((1-s)*y2(i)-d1+phi*(1-s)*y2(i))/(1-phi*wn/wt);
6 X+ a! o/ D5 ]/ F    d2(i)=phi*(1+r)*(wn/wt*ct2(i)+(1-s)*y2(i));
; _( k) V! ?; ?1 }9 s( Q# h    ct3(i)=(1-s)*y3-d2(i);
& [% ]+ A  Z- S* C/ A4 I    mu(i)=wt/((1-s)*y2(i)-d1+d2(i)/(1+r))-beta*wt*(1+r)/((1-s)*y3-d2(i));
/ r2 i' F$ T! A- }8 C   6 |- T( B5 j8 k2 Y5 Y# q
else0 v4 m+ X2 M) K% e/ n, f- ]4 U
    ct2(i)=((1-s)*y2(i)-d1+(1-s)*y3/(1+r))/(1+beta);
7 @: v- T8 s8 n0 j- S5 M    d2(i)=((1-s)*y3-beta*(1+r)*(1-s)*y2(i)+beta*(1+r)*d1)/(1+beta);, e# q+ b" e* ~' b& M* [; T
    ct3(i)=(1-s)*y3-d2(i);. M+ h' g! c$ |* k

- j  J- W- C* J: Q3 Z/ ?6 x# X! ^

' E3 n2 S5 w- L- H) A    mu(i)=0;! K. O3 w7 }+ C; @' `5 d, N# N
end
. I% e  g( {9 f8 i: H# p' n8 H! r/ H3 fe1(i)=wt/ct2(i);%每给定一个y2(i),计算得到一个e1(i),e2(i)0 x/ d8 q4 A5 b% M5 Z2 `
e2(i)=wt/ct2(i)*y2(i)+mu(i)*phi*y2(i)+beta*wt/ct3(i)*y3;
+ L& x! m; f/ d+ q1 `7 N
0 a% K+ N  M. v

! \) G8 y! O: |  d3 g%%%求均值%%%: m" T. _$ U0 j. P% T) z
expect1=mean(e1(1,:)); - n, T1 {0 K2 c6 x8 A5 B! S( c
expect2=mean(e2(1,:));
3 O% g# Y+ ]" }: n( q" Qend) O; g$ W8 F( ?! t6 P

% d! I$ h" `7 t* Z2 v" c# n8 B2 b

* I2 k- G8 b; a  T5 e: Z( Z%我的问题中,expect1,expect2实质上是s,d1的函数  e( K  p; b" I! e9 m. W& R
%在用fsolve优化求解的时候,每迭代一个新的(s,d1),都应该运行一次上述for这个循环,得到新的expect1、expect2再进行优化求解,
0 G" j+ a& U7 D; k%也即(s,d1)变化时,expect1、expect2也要变化,如此fsolve的目标函数也变化
' i$ t* D5 D3 [8 u%这样一个问题没有编程思路,请求大家给予指导,如果我的问题没有表述清楚,十分欢迎追问,谢谢。; K1 ~3 j% y+ L
( W/ D. P. t, y( C2 i3 M
# |$ b8 ]: x. t+ _
[x,fval,exitflag,output,]=fsolve(@(x)foc(x,expect1,expect2),x0);
+ z4 M9 u- P5 z( |5 P/ n( L- i5 z5 G7 B5 p" c9 R$ I
, {4 L% Z" L( A6 n) y5 N8 t% }
function f=foc(x,expect1,expect2)8 D0 \$ C  e" G' w6 H! u8 g
wn=0.3;, ~) _3 a5 r, Y+ ~/ G- W
wt=1-wn;* U9 q! p" K5 i. D( T) o
r=0.05;
5 D! b" M0 a$ z' X1 Y( X  X6 B6 t" _beta=1/(1+r);, W6 ?: K4 e" S$ k6 a7 @
epislon=0.05;
; h: U, Z2 n  U" x, z) ?phi=0.3;
0 z/ p: {* H! i* H6 c( w$ A1 |0 r! jy1=1;! M; l; L6 l& W" e# r4 ]- I
yn2=1;
) Z2 d$ j3 K* v& J  }y2mean=1;' ~: Y1 ^/ C6 m6 X+ D0 r  N) F
y3=1;/ h, W" F$ u( j& M4 g/ ^
theta=0.9;/ C8 N* U; x5 p8 C  L+ ]8 b
s=0.01;4 G* n0 O7 j* V% D1 b9 O
d1=0.1;4 x& M1 j4 O! r: f- I/ X' s
ct1=s*(1-theta)*y1+d1/(1+r);% ct1也与s,d1相关;
3 g  H0 w- ]5 N5 C  ?
1 X- E8 ^. E* w: Y

2 c9 a' |: c1 a% k" f/ B' Lf(1)=wt/ct1-beta*(1+r)*expect1;5 M0 `* c6 B: B1 g# [( d; G( T  f
f(2)=wt/ct1*y1*(1-theta)-beta*expect2;  j3 F* A$ ^/ k4 Y9 t8 m
end4 y: r5 e* j: b7 K

- q3 k  x/ _+ ]9 U0 z2 _" Y

7 m7 P, J1 ]& B7 O
作者: pTDbn25    时间: 2021-1-11 13:08
帮你顶一下
作者: zzz.dan    时间: 2021-1-11 17:43
; d- T' v8 b5 b0 Q
你这个写的啥,你foc的函数的变量f1和f2里面x的变量呢,你这个方程写的有很大问题
作者: nkkopd    时间: 2021-1-12 13:53





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2