Create decisionSelector.py
This commit is contained in:
parent
04eda1fec1
commit
f512a75d8b
141
strategy/decisionSelector.py
Normal file
141
strategy/decisionSelector.py
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
import pandas as pd
|
||||||
|
import datetime
|
||||||
|
import numpy as np
|
||||||
|
import plotly as pl
|
||||||
|
import plotly.graph_objs as go
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import math
|
||||||
|
import scipy
|
||||||
|
import random
|
||||||
|
|
||||||
|
class decisionMaking():
|
||||||
|
|
||||||
|
def __init__ (self, name=''):
|
||||||
|
|
||||||
|
self.name=name
|
||||||
|
self.mop={
|
||||||
|
'up': pd.DataFrame(),
|
||||||
|
'down':pd.DataFrame(),
|
||||||
|
'none':pd.DataFrame()
|
||||||
|
|
||||||
|
}
|
||||||
|
self.value={}
|
||||||
|
self.decision=''
|
||||||
|
self.real_decision=''
|
||||||
|
self.keys=[]
|
||||||
|
self.slice_dict={}
|
||||||
|
|
||||||
|
def addValue(self, dic_value):
|
||||||
|
self.value=dic_value
|
||||||
|
self.checkForNew()
|
||||||
|
self.setSlice()
|
||||||
|
self.getDecision()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def checkForNew(self):
|
||||||
|
|
||||||
|
if not (list(self.value.keys()) == self.keys):
|
||||||
|
self.createNewMop(list(self.value.keys()))
|
||||||
|
|
||||||
|
|
||||||
|
def createNewMop(self,missing_indicators):
|
||||||
|
print('reassembly mop')
|
||||||
|
new_columns= (missing_indicators)
|
||||||
|
|
||||||
|
|
||||||
|
#new_columns=new_columns.append(['value','p'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
n=len(new_columns)
|
||||||
|
start_value=-1
|
||||||
|
variator=3
|
||||||
|
new_lst=[]
|
||||||
|
buf_lst=[]
|
||||||
|
for i in range(n):
|
||||||
|
buf_lst.append(start_value)
|
||||||
|
|
||||||
|
|
||||||
|
for i in range(pow(variator,n)):
|
||||||
|
new_lst.append(buf_lst.copy())
|
||||||
|
|
||||||
|
for j in range(n):
|
||||||
|
for i in range(len(new_lst)):
|
||||||
|
dob_iterator=(i // pow(variator,j)) % variator
|
||||||
|
new_lst[i][j]=new_lst[i][j] + dob_iterator
|
||||||
|
|
||||||
|
|
||||||
|
#print (new_columns)
|
||||||
|
self.keys=new_columns
|
||||||
|
new_columns = new_columns+['amount']+['percentage']
|
||||||
|
|
||||||
|
for i in new_lst:
|
||||||
|
i = i.extend([0,0])
|
||||||
|
#i = i.append(0)
|
||||||
|
|
||||||
|
#print(new_lst)
|
||||||
|
#print(new_columns)
|
||||||
|
new_df=pd.DataFrame(new_lst,columns=new_columns)
|
||||||
|
|
||||||
|
self.mop['up']=pd.DataFrame.from_dict(new_df.to_dict())
|
||||||
|
self.mop['down']=pd.DataFrame.from_dict(new_df.to_dict())
|
||||||
|
self.mop['none']=pd.DataFrame.from_dict(new_df.to_dict())
|
||||||
|
|
||||||
|
|
||||||
|
def setSlice(self):
|
||||||
|
|
||||||
|
row_flg=True
|
||||||
|
self.slice_dict={}
|
||||||
|
for j in self.mop.keys():
|
||||||
|
for index, row in self.mop[j].iterrows():
|
||||||
|
for key, value in self.value.items():
|
||||||
|
if value != row[key]:
|
||||||
|
#print('fasle ',key,value,row[key])
|
||||||
|
row_flg=False
|
||||||
|
break
|
||||||
|
if row_flg:
|
||||||
|
self.slice_dict[j]=dict(row)
|
||||||
|
#print(j,dict(row))
|
||||||
|
row_flg=True
|
||||||
|
|
||||||
|
def getDecision (self):
|
||||||
|
|
||||||
|
max_value=0
|
||||||
|
for key, value in self.slice_dict.items():
|
||||||
|
if value['amount'] >= max_value:
|
||||||
|
max_value = value['amount']
|
||||||
|
self.decision = key
|
||||||
|
return self.decision
|
||||||
|
|
||||||
|
def setDecision (self,real_decision):
|
||||||
|
self.real_decision=real_decision
|
||||||
|
self.updMop()
|
||||||
|
self.slice_dict[real_decision]['amount']+=1
|
||||||
|
|
||||||
|
|
||||||
|
def updMop(self):
|
||||||
|
|
||||||
|
row_flg=True
|
||||||
|
for index, row in self.mop[self.real_decision].iterrows():
|
||||||
|
for key, value in self.value.items():
|
||||||
|
if value != row[key]:
|
||||||
|
row_flg=False
|
||||||
|
break
|
||||||
|
if row_flg:
|
||||||
|
#self.slice_dict[j]=dict(row)
|
||||||
|
row['amount']=row['amount']+1
|
||||||
|
row_flg=True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user