/
HyperIntervalNumber.py
63 lines (56 loc) · 2 KB
/
HyperIntervalNumber.py
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
__author__ = 'nevin47'
from numpy import *
import matplotlib.pyplot as plt
import IntervalNum
#DEC to BIN
base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]
def dec2bin(string_num):
num = int(string_num)
mid = []
while True:
if num == 0: break
num,rem = divmod(num, 2)
mid.append(base[rem])
return ''.join([str(x) for x in mid[::-1]])
class HyperIntervalNumber:
##The hyper interval number would use 2 pemeter to describe
def __init__(self,OriginIntervalNum):
self.IntervalNum = mat(OriginIntervalNum)
self.IntervalNum = self.IntervalNum.astype(float64)
self.SampleShape = self.IntervalNum.shape
def GetAllPosPoint(self):
##get all the posibility of the choice
ResultTemp = []
ResultFinal = []
for i in range(2**self.SampleShape[0]):
temp = dec2bin(i)
alllen = self.SampleShape[0]
resultlen = len(temp)
Origin = []
for j in range(alllen - resultlen):
Origin.append(0)
FR = Origin + list(temp)
ResultTemp.append(FR)
for i in ResultTemp:
TempMiddle =[]
for j in range(len(i)):
TempMiddle.append(self.IntervalNum[j,i[j]])
ResultFinal.append(TempMiddle)
return ResultFinal
def GetAllPosPoint2pe(self):
if(self.SampleShape[1] != 2):
print 'error!'
else:
new1 = [self.IntervalNum[0,0],self.IntervalNum[1,0]]
new2 = [self.IntervalNum[0,0],self.IntervalNum[1,1]]
new3 = [self.IntervalNum[0,1],self.IntervalNum[1,0]]
new4 = [self.IntervalNum[0,1],self.IntervalNum[1,1]]
self.PosPoint = [new1,new2,new3,new4]
def CalMiddlePoint(self):
TargetPoint = []
for i in self.IntervalNum:
Lower = i[0,0]
Higher = i[0,1]
Middle = (Lower + Higher)/2
TargetPoint.append(Middle)
return TargetPoint