python DEA: 零和数据包络分析zero-sum gain Data envelopment analysis

点赞发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
  • 13
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值