EDA365电子论坛网
标题:
matlab优化求解
[打印本页]
作者:
nkkopd
时间:
2021-1-26 11:12
标题:
matlab优化求解
关于matlab优化求解的问题请教大家;程序报错截图如下,我分析报错的原因是迭代点(s,d1)改变时,(expect1,expect2)未改变,具体问题描述如下:
: @5 b6 \/ s- ^- k% b# f: h
1.expect1,expect2是s,d1的函数,当fsolve函数按照优化算法找到新的点(s',d1')时,我的问题里时需要expect1,expect2也变化,这样fsolve的目标函数就也变化了;
4 i7 h2 t, C( f
2.根据上述1的描述,这个优化问题是否应该将(expect1,expect2)也纳入优化求解目标中去?这样该如何实现?
) Y2 J" c$ I% c3 f, e# L6 F7 @0 x
关于这样的编程问题思考了很久也没有编程思路,请求大家给予指导,我在代码中相应部分也对问题进行了表述,如果我的问题没有表述清楚,十分欢迎追问,先谢过大家。
S, [' g; v+ j2 b+ x5 C9 W5 x" d
clc;
* v+ `6 l' l( D) k4 Q
clear all;
* d, x6 [3 f8 w) Q, E2 f3 v1 B
%%% 赋值外生给定的参数 %%%
, q8 h/ U+ l4 | D# |
wn=0.3;
9 h6 s5 S! `4 Z. Z8 z o* i
wt=1-wn;
$ }4 I& s* L) n |1 m
r=0.05;
3 K |* I0 t* G" {( Z$ C
beta=1/(1+r);
: W. h V: b9 r1 n# V
epislon=0.05;
+ ^% {) Y$ V- {1 |0 {
phi=0.3;
* r8 A9 F# f$ x7 ]) R
y1=1;
0 e) o' D9 o+ `% g9 p+ [# O
yn2=1;
* ]( N& t/ y0 K* d& n: f
y2mean=1;
: o1 c7 x$ T9 U% L/ F+ c, `
y3=1;
9 Z! y) W, a; ^# K( s
theta=0.9;
! D6 W8 \- f4 y% n9 `" t
" d) s3 `) a6 @( e+ F0 L- h- l
% 赋值(y2,s,d1)
0 u7 b" R3 b8 w# j: ^7 X& u7 V0 V
y2=0.95:0.01:1.05;
3 U( q$ m2 Q+ }% S" \
s=0.1; %给s,d1的任意初值
6 A% Y/ M1 s( }2 [. T
d1=0.1;
' k7 ?. g1 I* I! } A: ?) b* k, e! B
x0 =[s,d1];
4 |; I) t* }3 O& M( W6 e
/ O* ]! @4 P/ b. {9 n& K/ Y
%在这个for循环里得到均值expect1,expect2,改变(s,d1),均值expect1,expect2也改变
; e2 t8 |( s( Z: F9 W$ w1 t
2 O+ M5 J. G# `7 e4 ^5 b: h5 M
for i=1:1:length(y2);
9 @# J# U3 l) H# P* a e
s=0.01;
" ]9 V1 i# b4 ~% K5 y8 E
d1=0.1;
6 J# i9 m4 b: L! O5 a& x' @$ J
* `1 y) v8 D5 y& X; V
%%% 判断是否紧约束 %%%
7 K1 A. i) ?4 y/ q% ?5 ~' F/ `3 M
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));
4 u5 E8 K' S6 I, a- S, f+ \
check(i)=d1/(1-s);
3 @0 J# a. l* R T! b
if check(i)>standard(i)
) Y! a7 ]2 }5 Q) f
ct2(i)=((1-s)*y2(i)-d1+phi*(1-s)*y2(i))/(1-phi*wn/wt);
( j% c% d9 _6 l& r' Z9 `, ^
d2(i)=phi*(1+r)*(wn/wt*ct2(i)+(1-s)*y2(i));
6 Q( f# d z9 h
ct3(i)=(1-s)*y3-d2(i);
( H. q/ u- W# o X# |# P
mu(i)=wt/((1-s)*y2(i)-d1+d2(i)/(1+r))-beta*wt*(1+r)/((1-s)*y3-d2(i));
! f" Z! B" z! M" c: i7 {; n
3 `# [- z0 G$ ~$ `# o- y
else
1 f) M5 P! @' @$ ]
ct2(i)=((1-s)*y2(i)-d1+(1-s)*y3/(1+r))/(1+beta);
1 u- j& B# y0 u6 C7 e( A
d2(i)=((1-s)*y3-beta*(1+r)*(1-s)*y2(i)+beta*(1+r)*d1)/(1+beta);
( X* G" u8 S, h( L5 t+ I
ct3(i)=(1-s)*y3-d2(i);
. n. k; C& Y# ^% [7 N% ^
1 |" W1 Y( `3 e0 y: j: \" T L
mu(i)=0;
+ s, W. o3 Q9 c; D$ d0 r$ `* p
end
9 R6 z$ F6 w W( l5 q0 J$ R2 J
e1(i)=wt/ct2(i);%每给定一个y2(i),计算得到一个e1(i),e2(i)
0 B! \6 K: U+ e f
e2(i)=wt/ct2(i)*y2(i)+mu(i)*phi*y2(i)+beta*wt/ct3(i)*y3;
, U' q5 |% Z: c# ~ g
- P( _7 Y1 Q6 X& T6 M
%%%求均值%%%
" S# n7 v5 R S! D1 G2 w% `
expect1=mean(e1(1,
);
4 b" w* x l! m- i! `4 `) W
expect2=mean(e2(1,
);
' f& r; z/ s1 ]" w: v9 @7 H7 [
end
# b! T: i, f4 M" |* ^7 a5 x9 z
( b! a2 F! D/ E' B4 C7 X
%我的问题中,expect1,expect2实质上是s,d1的函数
7 @. \7 E% M( ^: a5 ~8 I* K# A
%在用fsolve优化求解的时候,每迭代一个新的(s,d1),都应该运行一次上述for这个循环,得到新的expect1、expect2再进行优化求解,
; c* x ^# G, _+ v8 S8 q
%也即(s,d1)变化时,expect1、expect2也要变化,如此fsolve的目标函数也变化
( Z! j3 F! \( g0 H6 E5 i
%这样一个问题没有编程思路,请求大家给予指导,如果我的问题没有表述清楚,十分欢迎追问,谢谢。
) X& B9 ]7 R! e* Y8 O
9 o& o7 z z9 c4 N8 V
[x,fval,exitflag,output,]=fsolve(@(x)foc(x,expect1,expect2),x0);
( B2 a0 l f1 R" @" b
2 \, \8 ^; E3 P% |3 ?$ }, f0 r. l
function f=foc(x,expect1,expect2)
: S# ~1 m @3 }0 Q( Y; U
wn=0.3;
% L: f; `8 u9 }3 z
wt=1-wn;
. A& U1 S S6 q( {
r=0.05;
& W, ~. ? X" u' W2 l0 x1 w
beta=1/(1+r);
6 [2 `1 Z0 s8 {! b, `: T
epislon=0.05;
) X; G& K( F) Z' Y V
phi=0.3;
& Z! N" @) r. X" F# m
y1=1;
; o9 v8 Z/ S. C
yn2=1;
4 {1 h& W0 l3 o. y
y2mean=1;
' Z- [5 b, U! ~
y3=1;
- [( e7 @; l" _% e3 E- h
theta=0.9;
3 Y+ a9 f( P. K2 V2 ]/ y9 q
s=0.01;
: R2 d) k8 Q6 K1 v- R
d1=0.1;
" D* X- Z7 E! }+ ]
ct1=s*(1-theta)*y1+d1/(1+r);% ct1也与s,d1相关;
( K3 v$ B% D5 z# Z* I9 \+ a
; e9 {; F9 C: a: k, D, |( ^
f(1)=wt/ct1-beta*(1+r)*expect1;
3 L8 i2 r4 q, r! @1 @' f
f(2)=wt/ct1*y1*(1-theta)-beta*expect2;
5 M9 d0 d3 N+ c: M7 E7 _/ ~6 S
end
9 {# j) @& l P+ n( r9 M7 v; P
1.png
(41.42 KB, 下载次数: 6)
下载附件
保存到相册
2021-1-26 11:12 上传
2.png
(41.42 KB, 下载次数: 8)
下载附件
保存到相册
2021-1-26 11:12 上传
: `1 O0 [6 n! {
6 `8 F4 d/ J7 B% x0 |4 U
作者:
pTDbn25
时间:
2021-1-26 13:13
你这个写的啥,你foc的函数的变量f1和f2里面x的变量呢,你这个方程写的有很大问题
作者:
kekek
时间:
2021-1-26 13:33
来学习一下
作者:
zaiyiaaaa
时间:
2021-1-26 13:41
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2