def FeCalc(self, Aoptimality=True):
'''
Compute estimation efficiency.
:param Aoptimality: Kind of optimality to optimize, A- or D-optimality
:type Aoptimality: boolean
'''
try:
invM = scipy.linalg.inv(self.X)
except scipy.linalg.LinAlgError:
try:
invM = scipy.linalg.pinv(self.X)
except np.linalg.linalg.LinAlgError:
invM = np.nan
sys.exc_clear()
invM = np.array(invM)
st1 = np.dot(self.CX, invM)
CMC = np.dot(st1, t(self.CX))
if Aoptimality == True:
self.Fe = float(self.CX.shape[0] / np.matrix.trace(CMC))
else:
self.Fe = float(np.linalg.det(CMC)**(-1 / len(self.C)))
self.Fe = self.Fe / self.experiment.FeMax
return self
评论列表
文章目录