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

matlab优化求解

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
关于matlab优化求解的问题请教大家;程序报错截图如下,我分析报错的原因是迭代点(s,d1)改变时,(expect1,expect2)未改变,具体问题描述如下:5 |5 O3 s) ?7 ?1 L2 w% t% w& ^
1.expect1,expect2是s,d1的函数,当fsolve函数按照优化算法找到新的点(s',d1')时,我的问题里时需要expect1,expect2也变化,这样fsolve的目标函数就也变化了;
, ?# y, J0 O+ S  r: C6 ?2.根据上述1的描述,这个优化问题是否应该将(expect1,expect2)也纳入优化求解目标中去?这样该如何实现?( S3 }- t# _6 F. N# g" p9 ?
关于这样的编程问题思考了很久也没有编程思路,请求大家给予指导,我在代码中相应部分也对问题进行了表述,如果我的问题没有表述清楚,十分欢迎追问,先谢过大家。: Z  v' a9 P" L) u
clc;/ n0 _+ f0 a6 ~$ f, T3 `/ ?
clear all;
# G; ^2 y0 k# m# }' ?%%%  赋值外生给定的参数  %%%, ^9 v9 {% m1 H  u; t# q
wn=0.3;
9 {6 \6 E8 U4 W5 {+ iwt=1-wn;0 i# N( a  g8 p$ J; a" a4 i
r=0.05;! X2 G$ E% p8 P9 l. L+ T
beta=1/(1+r);
5 Y" F: t* `* x: R, K& depislon=0.05;! O! B0 p- m2 Q; m+ M( E
phi=0.3;( j) ?& N  Z1 p# B8 v; {5 b" l
y1=1;- N, D. g/ a9 |1 G  E
yn2=1;5 _2 B8 w; _4 M# c0 B
y2mean=1;
+ Z+ K/ }2 M0 Xy3=1;
2 A7 Y: o2 T* \theta=0.9;
+ O5 J' }/ f2 G1 F9 H+ W
) t; M1 x8 E* H% 赋值(y2,s,d1)
" b: p  ?8 U, j  T8 O( my2=0.95:0.01:1.05;
* a+ ~8 H0 q: g) m+ a; ~# Ds=0.1; %给s,d1的任意初值% @  b8 S, A  s- r3 n, s. r
d1=0.1;
! z& \. \  W' i4 o* ^, K' ?# [+ Xx0 =[s,d1];
: P7 K- l5 D9 T+ I; a7 O. s5 F, Z$ c( y/ Y. R
%在这个for循环里得到均值expect1,expect2,改变(s,d1),均值expect1,expect2也改变
7 q  u' p' g" \6 f3 V/ Q) _+ i
. K$ b! e  c! s# e, [9 `for i=1:1:length(y2);; L# v! R! w/ F$ X; N: ]# V( Q
s=0.01;6 U: w2 e$ }/ L' V. o: X9 j
d1=0.1;
! D- o/ J% }+ M/ w3 ~9 Q1 [$ [$ t6 t4 J) C2 M$ _/ r
%%% 判断是否紧约束 %%%
6 A6 c1 c* G( ]; Z7 T/ Astandard(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));* ]1 A! P0 Y) m# ?' d
check(i)=d1/(1-s);
( o# P( P& b$ Z0 k. z% ?/ O) N( B( yif check(i)>standard(i)( I8 N$ ~( ~; h8 ?- C5 _) d& C
    ct2(i)=((1-s)*y2(i)-d1+phi*(1-s)*y2(i))/(1-phi*wn/wt);( `2 O# s* W! b, [2 i
    d2(i)=phi*(1+r)*(wn/wt*ct2(i)+(1-s)*y2(i));
4 Q0 x0 a  W. @3 Y    ct3(i)=(1-s)*y3-d2(i);. x( J* R9 M& m7 R/ y; G2 G* _' `) r
    mu(i)=wt/((1-s)*y2(i)-d1+d2(i)/(1+r))-beta*wt*(1+r)/((1-s)*y3-d2(i));
) n% D8 l9 M4 d. |) l9 [% L! V* ^; `& X" x
else* Z  ~: r8 G. p: D+ L! C
    ct2(i)=((1-s)*y2(i)-d1+(1-s)*y3/(1+r))/(1+beta);9 n3 c) ]" d) n. _, q
    d2(i)=((1-s)*y3-beta*(1+r)*(1-s)*y2(i)+beta*(1+r)*d1)/(1+beta);
  c) _2 Q% _# c; b% M    ct3(i)=(1-s)*y3-d2(i);, E) P9 O$ h- g$ H
) x" g  w. l9 t9 X% F# D# E5 S
    mu(i)=0;& [" {4 H5 P" `- x
end
2 x$ P& q3 i* d8 W- We1(i)=wt/ct2(i);%每给定一个y2(i),计算得到一个e1(i),e2(i)1 I$ h- ?$ }$ K/ B* y4 D
e2(i)=wt/ct2(i)*y2(i)+mu(i)*phi*y2(i)+beta*wt/ct3(i)*y3;
/ r; f1 G( c2 n
: I6 }0 q3 R. w; P  J%%%求均值%%%5 h  {. ^9 H7 M  r5 h
expect1=mean(e1(1,); 5 {* L4 h" Z% ?! y6 a& e
expect2=mean(e2(1,);7 P) ?) V( X5 N
end
3 ?! Z" i* A& J9 P# Q# L# a/ i2 _; `1 B* y+ u& `6 H
%我的问题中,expect1,expect2实质上是s,d1的函数2 C4 {, k9 B. n4 f2 Y
%在用fsolve优化求解的时候,每迭代一个新的(s,d1),都应该运行一次上述for这个循环,得到新的expect1、expect2再进行优化求解,
- E1 m9 Z, Y6 O1 F; V& ?% l%也即(s,d1)变化时,expect1、expect2也要变化,如此fsolve的目标函数也变化
; t# _! M* z+ G: a% J%这样一个问题没有编程思路,请求大家给予指导,如果我的问题没有表述清楚,十分欢迎追问,谢谢。& X$ b6 {/ s2 u0 f- f
+ f& H/ T# I" [; D( ]+ x" J! ^9 P
[x,fval,exitflag,output,]=fsolve(@(x)foc(x,expect1,expect2),x0);
8 k! o9 F) z2 c  n; S; ~6 E1 a3 E9 \; t$ h
function f=foc(x,expect1,expect2)( U% S' h: t0 |! t, v1 D, u: t
wn=0.3;
; P( X( p/ m+ w4 uwt=1-wn;" ]( L8 k/ _) `; s
r=0.05;0 S$ S; k1 W7 o' W" I( I/ k( G
beta=1/(1+r);
) R+ B3 R, {# U. }# Hepislon=0.05;8 Y. R$ N# C) x4 {5 e8 ]: \
phi=0.3;$ q4 L% F! H6 [
y1=1;3 P  _" Z  p  N
yn2=1;- f; d, Y' _" @
y2mean=1;
* g# ?' E/ h! G& I% {2 wy3=1;" }4 O) ~) ~+ B0 b8 P
theta=0.9;
) X7 R+ x* x0 P9 O' F" {, ts=0.01;
4 s) F1 o/ e; ]9 K! S3 y/ z) ^( l& |d1=0.1;
+ o9 ^- q5 a8 g6 D4 o# w. {ct1=s*(1-theta)*y1+d1/(1+r);% ct1也与s,d1相关;' m: |# l1 x) W) x6 A: Q% \
5 G& @/ ^  r0 n6 C
f(1)=wt/ct1-beta*(1+r)*expect1;8 ]4 M; y9 z0 q/ t# K+ m& G
f(2)=wt/ct1*y1*(1-theta)-beta*expect2;# p( Y1 Y. d+ o- [, W
end2 ]' Y! ]$ c% Q: s! c+ E5 k
$ A! G5 t, S0 C% I3 o6 ]" _6 w4 v5 o

- q; Z0 O) H, p4 L

该用户从未签到

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-8-2 18:26 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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