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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
hcreuse=c(22,23,0:5)
hpleine=6:21
pcreuse=0.0967
ppleine=0.1147
tranche_en_min=60
co=round(tranche_en_min*0.0166667,5)
energ=((co*puiss_pac)/1000)
moncout<-function(heure){
if(heure %in% hcreuse){
prix1=energ*pcreuse
}else{prix1=energ*ppleine}
return(prix1)
}
pac=t(expand.grid(v))
row=nrow(pac)+1
col=ncol(pac)
basetemp=matrix(NA,row,col)
baseprix=matrix(NA,row,col)
basetemp[1,]=28 #Ici on initialise à 28 parce que c'est une simulation
basepuiss=matrix(NA,row,col)
basepuiss[1,]=data$puiss[1]
baseea=matrix(NA,row,col)
baseea[1,]=data$eau[1]-(data$air[1]-273.15)
basecouv=matrix(NA,row,col)
basecouv[1,]=data$couverture[1]
#On initialise également les premieres valeurs de températures
for(i in 2:row){
for (j in 1:ncol(pac)){
baseea[i,j]=((basetemp[i-1,j]+273.15))-(data$air[i-1])
basepuiss[i,j]=(((basetemp[i-1,j]+273.15)/100)^4)-((data$air[i-1]/100)^4)
basetemp[i,j]=basetemp[i-1,j]+(b0+b1*pac[i-1,j]+b2*basepuiss[i-1,j]+b3*baseea[i-1,j]+b4*data$couverture[i])*6
}
}
basetemp=t(basetemp[-1,]) #On remplit la premiere ligne du tableau par la valeur de température initiale
cout=as.matrix(c(0,1*moncout(data$heure[1])))
cout=t(cout) #On initialise également les couts
iterations=800
AM=14:20
for (iteration in 2:iterations){
long_temp=length(basetemp)
newtemp=cbind(basetemp,basetemp)
newea=(newtemp+273.15)-(data$air[iteration-1])
newpuiss=(((newtemp+273.15)/100)^4)-((data$air[iteration-1]/100)^4) #On recalcule à chaque étape car c'est une simulation
newcout=cbind(cout,cout) #On concatene le cout pour que la valeur remplacée soit la suivante
newpac=matrix(NA,iteration,2*long_temp)
newpac[1:(iteration-1),]=cbind(pac,pac) #idem pour PAC
newpac[iteration,1:long_temp]=0 #On veut creer ttes les combinaisons possibles a partir de ce qu'il nous reste
newpac[iteration,(long_temp+1):(2*long_temp)]=1
for (i in 1:(2*long_temp)){
newcout[i]=newcout[i]+newpac[iteration,i]*moncout(hour[iteration]) #On calcule le cout à l'aide de la fonction crée plus haut
newtemp[i]=newtemp[i]+(b0+b1*newpac[iteration,i]+b2*newpuiss[i]+b3*newea[i]+b4*data$couverture[iteration])*6
}
for(j in (2*long_temp):1){ #On fait le chemin à l'enver pour ne pas avoir de décalage dans les indices lorsque l'on ôte une valeur
todelete=0
if (( (data$jour[iteration] %in% c('samedi','dimanche')) & (hour[iteration] %in% AM) &(newtemp[j]<27 | newtemp[j]>29) ) | (newtemp[j] > 29) ){ #On supprime les valeurs qui ne nous intéresse pas
todelete=1
}else{
indcout=which(newcout<=newcout[j])
indtemp=which(newtemp>newtemp[j])
ind=intersect(indcout,indtemp)
if(length(ind)!=0){
todelete=1
}
}
if(todelete==1){
newcout<-t(as.matrix(newcout[-j])) #On enleve les indices mauvais
newtemp<-t(as.matrix(newtemp[-j]))
newpac<-newpac[,-j]
}
}
#print(length(newcout))
print(iteration)
#points(newcout~newtemp,col='blue',pch='+') #On remplace pour recommencer la boucle
basetemp=newtemp
cout=newcout
pac=newpac
} |
Partager