フィルターのクリア

Calculate the optimum of function

1 回表示 (過去 30 日間)
amine&&
amine&& 2016 年 12 月 31 日
コメント済み: Star Strider 2016 年 12 月 31 日
Hello. I have the following function :
%%Déclaration de la fonction objective qu'on va utiliser
function MSE=mseFunction(alpha,beta)
%%Chargez les données des 6 jours
filename = 'BS_1.xlsx';
y = xlsread(filename);
%ys va contenir les données qu'on a obtenu pendant 6 jours
yS=y(1:288);
%%Calcul de la moyenne mobile d'ordre 48 pour les 6 jours
%Initialisation du vecteur qui va contenir la moyenne mobile
MMCS=zeros(240,1);
%Calcul de la moyenne mobile
for i=1:240
MMCS(i)=1/48.*((yS(i)/2)+sum(yS(i+1:i+47))+(yS(i+48)/2));
end
%Remplir les 24 premieres et derniéres cases par des zeros
MoyenneMobileCentreeS = padarray(MMCS,24,'both');
%%Calcul des composantes saisonniares
yMS=yS(25:264)./MoyenneMobileCentreeS(25:264);
%Réecrire le vecteur de telle sorte que les 24 premieres et derniére
%valeurs soient des zéros
bS = padarray(yMS,24,'both');
%Ecrire les valeurs du vecteur sous forme d'une matrice avec 48 lignes et 7 colonnes
MS = reshape(bS,[48,6]);
%Remplacer les zeros par des valeurs NaN pour ne pas les introduire dans le
%calcul de la médianne
MS(1:24,1)=NaN;
MS(25:48,6)=NaN;
%Calcul de la médianne de chaque ligne de la matrice
ComposantsSaisonniersS = nanmedian(MS,2);
%%Lissage exponnentiel simple
LES=zeros(288,1);
LES(25)=MoyenneMobileCentreeS(25);
for i=26:264;
LES(i)=alpha.*MoyenneMobileCentreeS(i)+(1-alpha).*LES(i-1);
end
%%Intégration de la composante saisonniére
S=zeros(264,1);
S(1:48,:)=ComposantsSaisonniersS;
for j=49:264;
S(j)=beta.*(yS(j)./LES(j))+(1-beta).*S(j-48);
end
%%Prévision
PREV=zeros(264,1);
PREV(26:264)=S(26:264).*LES(25:263);
PREV2=padarray(PREV(:),24,'post');
%%Calcul de la MSE
MSE = mean((y(26:264)-PREV2(26:264)).^2);
I want to calculate its optimum using "optimization tool". What should I put in the objective function tab. Thanks!

採用された回答

Star Strider
Star Strider 2016 年 12 月 31 日
編集済み: Star Strider 2016 年 12 月 31 日
One approach:
% % % b(1) = alpha, b(2) = beta
call_mseFunction = @(b) mseFunction(b(1),b(2));
B0 = [3; 5]; % Choose Appropriate Initial Estimates
Bopt = fminsearch(call_mseFunction, B0);
alpha = Bopt(1)
beta = Bopt(2)
NOTE This is UNTESTED CODE. It should work.
  10 件のコメント
amine&&
amine&& 2016 年 12 月 31 日
Thanks Strider.
Star Strider
Star Strider 2016 年 12 月 31 日
My pleasure.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMultiobjective Optimization についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by