1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| # une fonction qui permet de faire une somme , je vais l'utiliser par la suite dans ma fonction à minimiser
sommation<-function(k,n,N)
{
l<-0
for(i in (k+1):N)
{
l<-l+n[i]
}
return(l)
}
# ma fonction à optimiser ou minimiser :
lvar<-function(n,N=10,X=10000,cl=0.99,taux=1,moyR=0.0009065256,EspRelative0=0.04001551,Gamma0=0.00379783,Mu0=0.0379783,S0= 53,sigmaR=0.01350311,sigmaEpsRelative=0.01430420,sigmaGamma= 0.01357616,sigmaMu= 0.1357616)
{
alpha<-qnorm(1-cl)
#avec cette boucle "for" j'ai essayé d'integrer la 1er contrainte dans la fonction
#comme le vecteur x s'ecrit en fonction de vecteur n (qui est notre paramétre )
x=vector(length=N)
for(k in 0:(N-1))
{
x[k]<-sommation(k,n,N)
}
somme1<-0
somme2<-0
somme3<-0
for(k in 1:N)
{
somme1<-somme1+(taux*x[k])
somme2<-somme2+(n[k]*(X-x[k]))
somme3<-somme3+(((n[k])^2)/taux)
}
E_TC=(-S0*moyR*somme1)+(0.5*S0*EspRelative0*X)+(Gamma0*somme2)+(Mu0*somme3)
V_TC<-0
for(k in 1:N)
{
V_TC<-V_TC+(((sigmaR)^2+(1/4)*(sigmaEpsRelative)^2)*(S0^2)*taux*(x[k]^2))+(k* (sigmaGamma^2)*taux*((X-x[k])^2)*(n[k]^2))+((k*(sigmaMu^2)*(n[k]^4))/taux)
}
Lvar=(E_TC+alpha*sqrt(V_TC))
L_var<-abs(Lvar)
return(L_var)
}
#optimisation :
#le N doit avoir la meme valeur prise au niveau de la fonction , pour avoir une cohérance de taille car N présente la taille de notre vecteur paramétre n
N=10
# ui : c'est la matrice des coeff "constraint matrix (10 x 12)"
m1=diag(N)
m2=matrix(nrow=2,ncol=N)
m2[1,] =rep(1)
m2[2,] =rep(-1)
ui=rbind(m1,m2)
# ci constraint vector of length 10 càd N
v1<-c(0,0,0,0,0,0,0,0,0,0,10000,-10000.001)
ci=v1
#il faut choisir l'initialisation telqu'elle verifie : ui %*%initial - ci >= 0
#car "The starting value must be in the interior of the feasible region" comme il est dit dans la définition de la fonction constrOptim
initial=rep(1000.00005,N)
constrOptim(initial,lvar,NULL,ui,ci) |
Partager