買電料金

太陽光発電をすると、余剰発電分は売電し、不足分は買電する。売電単価は時刻によらず一定だが、買電単価は電気料金メニューによっては時刻によって変わるそうだ。
買電量の時刻別分布は太陽光発電していないときとしているときでは変化する。何時にどれくらい買電するかと料金メニューとの関係を計算してみたい
とりあえず、メモ

k.sell <- rep(4.2,24)

dento.a.kiso <- 320.25
dento.a.koso.kubun <- c(0,15,120,300)

# x は時間別買電量、fracは1か月の情報のどのくらいの割合の情報か
k.buy.dento.a <- function(x, frac = 1, kiso = 320.25,kubun = c(0,15,120,300),tanka = c(0,19.05,24.21,25.55)){
	x2 <- sum(x)/frac
	y <- kiso
	for(i in 1:(length(kubun)-1)){
		if(x2 >= kubun[i]){
			y <- y + tanka[i] * min(x2-kubun[i],kubun[i+1]-kubun[i])
		}
	}
	if(x2 > kubun[length(kubun)]){
		y <- y + tanka[length(tanka)] * (x2-kubun[length(kubun)])
	}
	return(y)
}

k.buy.jikanbetsu <- function(x, frac = 1, kiso = 1155,kubun = c(0,90,230),tanka = c(21.27,27.25,28.83),tanka.yoru = 8.19){
	x2 <- x/frac
	y <- kiso
	hiru <- 8:23
	yoru <- c(1:7,24)
	hirus <- sum(x2[hiru])
	yorus <- sum(x2[yoru])
	
	for(i in 1:(length(kubun)-1)){
		if(hirus >= kubun[i]){
			y <- y + tanka[i] * min(hirus-kubun[i],kubun[i+1]-kubun[i])
		}
	}
	if(hirus > kubun[length(kubun)]){
		y <- y + tanka[length(tanka)] * (hirus-kubun[length(kubun)])
	}
	y <- y + tanka.yoru*yorus
	return(y)
}

xs <- seq(from=0,to=500,by=1)
dento.a.out <- rep(NA,length(xs))

for(i in 1:length(xs)){
	dento.a.out[i] <- k.buy.dento.a(xs[i])
}

plot(xs,dento.a.out,type="l")


k.buy.jikanbetsu(rep(300/24,24))
k.buy.jikanbetsu(xx)


xx <-c(0.3,0.3,0.2,0.3,0.2,0.7,0.6,0.6,1.4,0.4,0,0,0,0,0,0,0,0.2,0.8,0.6,1.1,1.4,0.7,0.6)

xx <- xx/sum(xx) * 300