点赞发Nature
关注中Science
在生产可能集中的资源再分配是在环境约束的生产过程中的一个新的研究课题。ZSG-DEA方法是解决资源分配问题的一个新兴方法。ZSG方法假设整个经济中的资源是固定的,因此一个单元的投入资源增加必然导致另一个单元的投入减少。
在解决CO2排放权分配的问题上,很多文献就采用了ZSG-DEA方法。他们假设CO2为input,其他的GDP,人口,资本投入为output,利用ZSG-DEA方法,基于效率对CO2排放权进行分配。
但是,这种假设显然是有悖于实际情况的,在实际情况中,经济体的投入是人口、能源、资本等,期望产出是GDP,CO2是作为非期望产出存在的。因此,以下代码基于与传统DEA方法一致的假设构建模型:
import numpy as np
import pandas as pd
import pulp
class ZSG_DEAProblem:
def __init__(
self,
inputs, # 生产过程投入 dataframe or Series格式
outputs, # 生产过程产出 dataframe or Series格式
bad_outs, # 生产过程非期望产出 dataframe or Series格式
returns="CRS", # 默认假设规模报酬不变
in_weights=[0, None],
out_weights=[0, None],
badout_weights=[0, None], #系数的非零假设
):
self.inputs = inputs
self.outputs = outputs
self.bad_outs = bad_outs
self.returns = returns #初始化投入、产出向量、鸡舍
self.J, self.I = self.inputs.shape # no of DMUs, inputs
_, self.R = self.outputs.shape # no of outputs
_, self.S = self.bad_outs.shape # no of bad outputs
self._i = range(self.I) # inputs
self._r = range(self.R) # outputs
self._s = range(self.S) # bad_output
self._j = range(self.J) # DMUs
self._in_weights = in_weights # input weight restrictions
self._out_weights = out_weights # output weight restrictions
self._badout_weights = badout_weights # bad output weight restrictions
# creates dictionary of pulp.LpProblem objects for the DMUs
self.dmus = self._create_problems()
def _create_problems(self):
"""
Iterate over the DMU and create a dictionary of LP problems, one
for each DMU.
"""
dmu_dict = {
}
for j0 in self._j:
dmu_dict[j0] = self._make_problem(j0)
return dmu_dict
def _make_problem(self, j0):
"""
Create a pulp.LpProblem for a DMU.
"""
# Set up pulp
prob = pulp.LpProblem("".join(["DMU_", str