找回密码
 注册
关于网站域名变更的通知
查看: 457|回复: 3
打印 上一主题 下一主题

matlab优化求解

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-1-26 11:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
关于matlab优化求解的问题请教大家;程序报错截图如下,我分析报错的原因是迭代点(s,d1)改变时,(expect1,expect2)未改变,具体问题描述如下:+ o* u% `  _) h4 V
1.expect1,expect2是s,d1的函数,当fsolve函数按照优化算法找到新的点(s',d1')时,我的问题里时需要expect1,expect2也变化,这样fsolve的目标函数就也变化了;
4 n8 T# Y& l# ^2.根据上述1的描述,这个优化问题是否应该将(expect1,expect2)也纳入优化求解目标中去?这样该如何实现?, T2 q/ L3 _. F; W' i1 f
关于这样的编程问题思考了很久也没有编程思路,请求大家给予指导,我在代码中相应部分也对问题进行了表述,如果我的问题没有表述清楚,十分欢迎追问,先谢过大家。
1 h$ p! W1 q5 l7 c9 m' Hclc;% v, U5 C4 `3 ]4 M  @) d( j
clear all;
3 k. I# ?6 O! X( x5 K9 ^%%%  赋值外生给定的参数  %%%
3 v; T3 I! W) m+ |4 @7 B% ]wn=0.3;1 w2 {: g9 u% r- p
wt=1-wn;
. J! J! k' u5 R6 Mr=0.05;
- W9 _5 r8 |+ w( J' k2 y) sbeta=1/(1+r);
; i: @8 P# Z. D; o$ \- A+ zepislon=0.05;3 ?8 `* U+ \* c, w$ Z9 F
phi=0.3;
! _" P& F- Z# F0 T6 I4 r6 x# ]6 Uy1=1;
, d% \) }: ]3 p  I9 tyn2=1;
$ t7 f! l4 q! ]y2mean=1;' n0 t- r$ J) s0 e+ @4 R
y3=1;
+ C. [, v/ C, M, @* z" e. dtheta=0.9;- M2 ~3 G, g$ e8 ~+ c, C! f

3 z* y  C4 p, U7 U( h% 赋值(y2,s,d1)
2 i: p' v- e0 L/ _; S3 [y2=0.95:0.01:1.05;
+ G; m6 g0 s5 r! ~s=0.1; %给s,d1的任意初值( m3 A8 Y. y' P' c" _8 _" X
d1=0.1;) f5 w& q2 g7 r) H9 z2 Y
x0 =[s,d1];4 y- j# w% x7 I6 Q" ?

! c+ ?0 A% b, L: n5 E/ f%在这个for循环里得到均值expect1,expect2,改变(s,d1),均值expect1,expect2也改变# ]% c& ^9 v! k2 f' {" r
) U- Z; v7 y" W1 k4 O. t
for i=1:1:length(y2);
- J6 {6 A% k, a0 o; M% qs=0.01;
& `& n8 s, g5 Q' Qd1=0.1;8 r* A$ U/ h! t, a) A1 S% m0 Q! {, x
: }0 {" p: i: ]5 U8 }* S4 O/ Q
%%% 判断是否紧约束 %%%: S" V3 O: m" a7 x# 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));
  C# B$ z! D5 B" E8 D4 ucheck(i)=d1/(1-s);: ~0 j% f$ O9 W! d( E9 l' \
if check(i)>standard(i)
3 ~* Q4 ~" H9 |6 ?# u8 j$ w. Q    ct2(i)=((1-s)*y2(i)-d1+phi*(1-s)*y2(i))/(1-phi*wn/wt);
6 ~- [4 k/ x8 r7 K  s# S  p  N: Y/ q    d2(i)=phi*(1+r)*(wn/wt*ct2(i)+(1-s)*y2(i));* z, _+ p' _' T, S& N9 E+ x
    ct3(i)=(1-s)*y3-d2(i);! R6 H5 k3 u- v  u+ z9 A
    mu(i)=wt/((1-s)*y2(i)-d1+d2(i)/(1+r))-beta*wt*(1+r)/((1-s)*y3-d2(i));
% Q) L  p# C2 p2 G
1 m2 H6 z# o$ [, F9 }1 s: ~  r1 g- \else0 s/ K; T+ n6 z
    ct2(i)=((1-s)*y2(i)-d1+(1-s)*y3/(1+r))/(1+beta);8 L8 k6 z' C7 K; y4 g! F4 c
    d2(i)=((1-s)*y3-beta*(1+r)*(1-s)*y2(i)+beta*(1+r)*d1)/(1+beta);
1 v; a0 A9 h3 L! t: Z    ct3(i)=(1-s)*y3-d2(i);  c5 V; J5 F8 }: f3 A1 u* w
0 x9 y# ]- t# A4 o( ^4 ^
    mu(i)=0;9 r6 t/ Y8 J" k4 g
end
. }  c2 R, o$ c. \! g. u( te1(i)=wt/ct2(i);%每给定一个y2(i),计算得到一个e1(i),e2(i)
* O) i+ Y& L% V( w2 n" Pe2(i)=wt/ct2(i)*y2(i)+mu(i)*phi*y2(i)+beta*wt/ct3(i)*y3;, I- n0 c* ^- u3 }8 z' X3 E- J

# p7 T+ O8 T  H( K9 Q4 S8 x7 M2 x%%%求均值%%%, ]% q. Q* @) \
expect1=mean(e1(1,); 7 R" e0 D  G+ Q% F! D* v/ k* \
expect2=mean(e2(1,);& y% |7 Z! V, T% i% r5 _
end# h! ^6 L8 I3 S# ]

+ [: e) {" U( i6 Z6 S%我的问题中,expect1,expect2实质上是s,d1的函数
$ ~& `# A! ]: D% P5 N! g%在用fsolve优化求解的时候,每迭代一个新的(s,d1),都应该运行一次上述for这个循环,得到新的expect1、expect2再进行优化求解,
7 F- F  P, \4 Y" N0 U# {/ h4 N%也即(s,d1)变化时,expect1、expect2也要变化,如此fsolve的目标函数也变化
# g+ B& B0 O/ Y%这样一个问题没有编程思路,请求大家给予指导,如果我的问题没有表述清楚,十分欢迎追问,谢谢。
3 F6 z7 L9 S) _" h# n" }  H! I6 ~, R: l# E5 |! ?
[x,fval,exitflag,output,]=fsolve(@(x)foc(x,expect1,expect2),x0);( s* T- F. v+ _6 h/ D2 E* J

' s" L$ f9 U9 R- ufunction f=foc(x,expect1,expect2)0 d6 w3 f0 W# n9 g+ R: ]0 N6 |
wn=0.3;  q) [) c- {' E. }' e3 b& j7 w
wt=1-wn;
: t; S6 A9 I3 s- e1 o6 l" @) lr=0.05;
8 ]) y/ C5 B1 S  f2 dbeta=1/(1+r);$ z5 W9 C: r1 l6 u# W% l* g
epislon=0.05;9 D" W2 c2 \/ K) v! {5 A
phi=0.3;
: g3 c5 n# M6 G2 R3 P5 {y1=1;
4 e4 i0 s, g0 h# n5 q4 Zyn2=1;
7 `1 {/ A/ }- Oy2mean=1;
# B, |$ a+ E! Hy3=1;. v1 |2 I$ F2 I8 _" W- q
theta=0.9;+ X0 v( R9 t8 T; `0 W7 b
s=0.01;  `% @" V2 e/ L+ F' R$ T
d1=0.1;
) c# `4 a3 k" h) Gct1=s*(1-theta)*y1+d1/(1+r);% ct1也与s,d1相关;8 A$ ^2 j# Z3 ~$ ~$ O
4 W  ^, v* ^' f# d$ q
f(1)=wt/ct1-beta*(1+r)*expect1;* p. M: ]2 F* w9 M5 ?# J" T4 P' j4 @
f(2)=wt/ct1*y1*(1-theta)-beta*expect2;8 ]! [' w& Z+ _! v4 I
end. N! P- r* S: W( g
+ U/ y) h4 C% r4 r) _$ M2 U

2 j" \. e0 F# r3 L9 O

该用户从未签到

2#
发表于 2021-1-26 13:13 | 只看该作者
你这个写的啥,你foc的函数的变量f1和f2里面x的变量呢,你这个方程写的有很大问题

该用户从未签到

3#
发表于 2021-1-26 13:33 | 只看该作者
来学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-20 15:55 , Processed in 0.140625 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表