既有住宅加装电梯费用合理分摊方案
Problem 1
我们知道高层住宅楼越高的居民公摊费用越高,这是由于不同楼层的居民电梯使用时间不同使用电量大小不同造成的,当然了加装电梯对于一楼居民用户是没有什么益处的,反而加装电梯会给一楼的居民造成噪音影响。因此,问题就来了这个电梯怎么向居民收费呢?
首先,如果单从楼层和加装电梯的使用上看,电梯的分摊费用一定是楼层越高的用户所支付的分摊费用越多。如果非其他因素影响这就是典型的线性关系,但是呢,不可能只考虑楼层高度的因素,因为这是主因,还有其他间接影响或是促进或是阻碍房价的费用,最主要的即是光照因素以及房屋面积,房屋面积这个影响因素忽略与否取决于你研究的是普遍住宅还是特例住宅,如果是普遍高层住宅那就需要考虑该因素。至于光照,这就是分摊费用变化率的体现,你怎么做合理要鉴于实际市场情况有理有据。
这个地方建议使用层次分析,分开来处理
import numpy as np
#AHP类
class AHP:
#初始化函数
def __init__(self, array):
## 记录矩阵相关信息
self.array = array
## 记录矩阵大小
self.n = array.shape[0]
# 初始化RI值,用于一致性检验
self.RI_list = [ 3,6,9,12,15,18,21,24,25,27,30]
# 矩阵的特征值和特征向量
self.eig_val, self.eig_vector = np.linalg.eig(self.array)
# 矩阵的最大特征值
self.max_eig_val = np.max(self.eig_val)
# 矩阵最大特征值对应的特征向量
self.max_eig_vector = self.eig_vector[:, np.argmax(self.eig_val)].real
# 矩阵的一致性指标CI
self.CI_val = (self.max_eig_val - self.n) / (self.n - 1)
# 矩阵的一致性比例CR
self.CR_val = self.CI_val / (self.RI_list[self.n - 1])
#一致性判断
def test_consist(self):
# 打印矩阵的一致性指标CI和一致性比例CR
print("判断矩阵的CI值为:" + str(self.CI_val))
print("判断矩阵的CR值为:" + str(self.CR_val))
# 进行一致性检验判断
if self.n == 2: # 当只有两个子因素的情况
print("仅包含两个子因素,不存在一致性问题")
else:
if self.CR_val < 0.1: # CR值小于0.1,可以通过一致性检验
print("判断一致性结果:" + "通过一致性检验")
return True
else: # CR值大于0.1, 一致性检验不通过
print("判断一致性结果:" + "未通过一致性检验")
return False
#算术平均法求权重
def cal_weight_by_arithmetic_method(self):
# 求矩阵的每列的和
col_sum = np.sum(self.array, axis=0)
# 将判断矩阵按照列归一化
array_normed = self.array / col_sum
# 计算权重向量
array_weight = np.sum(array_normed, axis=1) / self.n
# 打印权重向量
print("算术平均法计算得到的权重向量为:\n", array_weight)
# 返回权重向量的值
return array_weight
#几何平均法求权重
def cal_weight__by_geometric_method(self):
# 求矩阵的每列的积
col_product = np.product(self.array, axis=0)
# 将得到的积向量的每个分量进行开n次方
array_power = np.power(col_product, 1 / self.n)
# 将列向量归一化
array_weight = array_power / np.sum(array_power)
# 打印权重向量
print("几何平均法计算得到的权重向量为:\n", array_weight)
# 返回权重向量的值
return array_weight
#特征值法求权重
def cal_weight__by_eigenvalue_method(self):
# 将矩阵最大特征值对应的特征向量进行归一化处理就得到了权重
array_weight = self.max_eig_vector / np.sum(self.max_eig_vector)
# 打印权重向量
print("特征值法计算得到的权重向量为:\n", array_weight)
# 返回权重向量的值
return array_weight
#计算判断矩阵的一致性与权重向量
def calWeight():
# 给出判断矩阵
b = np.array(
[[1, 2, 5, 7],
[1/2, 1, 3, 5],
[1/5, 1/3, 1, 3],
[1/7, 1/5, 1/3, 1]])
AHP(b).test_consist()
# 算术平均法求权重
weight1 = AHP(b).cal_weight_by_arithmetic_method()
# 几何平均法求权重
weight2 = AHP(b).cal_weight__by_geometric_method()
# 特征值法求权重
weight3 = AHP(b).cal_weight__by_eigenvalue_method()
return weight1,weight2,weight3
可以按照楼层和面积分摊。比如,以第三层为参数1、第二层为0.5、第一层为0,从第四层开始每增加一个楼层提高0.1个系数,即第四层1.1、第五层1.2、第六层1.3,并依次类推出资比例;
同一楼层各户的出资比例可以按照业主专有部分占该层建筑总面积的比例确定。通风、采光或者通行受加装电梯直接影响的底层房屋业主,可由其他业主酌情给予一定的补偿。
也可按照层数来分摊的方式。比如,二楼每户算半层,三楼每户算一层半,四楼每户算两层半,五楼每户算三层半,6楼每户算四层半。每层楼有两户,这样一个单元的12户共承担25层,然后总投资数除以25层得出一个数,然后每户再用平分到的层数乘以这个数,就是每户应该均摊到的费用。这种方式实际上还是依据楼层高低来分摊。