# setwd("C:/Users/james/Dropbox/Code/RegretforStochasticMWU")
# source("MWUUpdates.R")

#Defined in Batch file
#frames<- 20001 #Number of Replications
#eps1<-.2		#Controls player 1 learning rate  
#eps2<-.2	#Controls player 2 learning rate 
#strategies		<-	2

#####################################INITIALIZE FOR USE
strat1			<-  matrix(nrow=frames, ncol=strategies)
strat2			<-  matrix(nrow=frames, ncol=strategies)
realstrat1		<-  matrix(nrow=frames)
realstrat2		<-  matrix(nrow=frames)
paymatrix1		<-  matrix(nrow=strategies,ncol=strategies)
paymatrix2		<-  matrix(nrow=strategies,ncol=strategies)

#######Initialize Strategies
for(i in 1:strategies){
	strat1[1,i]=runif(1,0,1)
	strat2[1,i]=runif(1,0,1)
}
sum1=0;
sum2=0;
for(i in 1:strategies){
	sum1=sum1+strat1[1,i]
	sum2=sum2+strat2[1,i]
}
for(i in 1:strategies){
	strat1[1,i]=strat1[1,i]/sum1
	strat2[1,i]=strat2[1,i]/sum2
}

#######Initialize Payoff Matrix
for(i in 1:strategies){
	for(j in 1:strategies){
		paymatrix1[i,j]=runif(1,-1,1)
		paymatrix2[j,i]=-paymatrix1[i,j]
	}
}

#Generate Random strategy
rand1 = runif(1,0,1)
checker=0
for(i in 1:strategies){
	if(checker==0){
		if(rand1<= sum(strat1[1,1:i])){
			checker=1
			realstrat1[1]=i
		}
	}
}


################################BEGINNING OF GD LOOP


for(k in 2:frames){
	
#Generate Random strategy for previous iteration
	rand1 = runif(1,0,1)
	rand2 = runif(1,0,1)
	checker1=0
	checker2=0
	for(i in 1:strategies){
		if(checker1==0){
			if(rand1<= sum(strat1[k-1,1:i])){
				checker1=1
				realstrat1[k-1]=i
			}
		}
		if(checker2==0){
			if(rand2<= sum(strat2[k-1,1:i])){
				checker2=1
				realstrat2[k-1]=i
			}
		}
	}

#UpdateStrategies
	sum1=0
	sum2=0
	for(i in 1:strategies){
		strat1[k,i]= strat1[k-1,i]*exp(eps1*paymatrix1[i,realstrat2[k-1]])
		sum1=sum1+strat1[k,i]
		strat2[k,i]= strat2[k-1,i]*exp(eps2*paymatrix2[i,realstrat1[k-1]])
		sum2=sum2+strat2[k,i]
	}
	for(i in 1:strategies){
		strat1[k,i]=strat1[k,i]/sum1
		strat2[k,i]=strat2[k,i]/sum2
	}
	

}
#plot(strat1[,1],strat2[,1])
########################## 
