{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# SBM-ML模型\n",
    "\n",
    "参考文献:命令控制与可交易环境政策下的碳排放强度减排效应\n",
    "\n",
    "## 原理\n",
    "\n",
    "目标函数:$\\omega^{t}=\\max \\sum_{k=1}^{K} a_{k}^{t}$\n",
    "\n",
    "s.t. 对第 1 个省区:\n",
    "\n",
    "$\\sum_{k=1}^{K} z_{k}^{1, t} \\times y_{k}^{t} \\geqslant y_{1}^{t}+a_{1}^{t}$\n",
    "\n",
    "$\\sum_{k=1}^{K} z_{k}^{1, t} \\times u_{k}^{t}=u_{1}^{t} $\n",
    "\n",
    "$\\sum_{k=1}^{K} z_{k}^{1, t} \\times$\n",
    "\n",
    "$e_{k}^{t}=e_{1}^{t} $\n",
    "\n",
    "$\\sum_{k=1}^{K} z_{k}^{1, t} \\times x_{k, n}^{t} \\leqslant x_{1, n}^{t}, n=1,2 $\n",
    "\n",
    "$z_{k}^{1, t} \\geqslant 0, k=1, \\cdots, K$\n",
    "\n",
    "……\n",
    "\n",
    "对第 K 个省区:\n",
    "\n",
    "$\\sum_{k=1}^{K} z_{k}^{K . t} \\times y_{k}^{t} \\geqslant y_{K}^{t}+a_{K}^{t} $\n",
    "\n",
    "$\\sum_{k=1}^{K} z_{k}^{K, t} \\times u_{k}^{t}=u_{K}^{t} $\n",
    "\n",
    "$\\sum_{k=1}^{K} z_{k}^{K . t} \\times$\n",
    "\n",
    "$e_{k}^{t}=e_{K}^{t} $\n",
    "\n",
    "$\\sum_{k=1}^{K} z_{k}^{K, t} \\times x_{k, n}^{t} \\leqslant x_{K, n}^{t}, n=1,2$\n",
    "\n",
    "$z_{k}^{K, t} \\geqslant 0, k=1, \\cdots, K$\n",
    "\n",
    "$a_{k}^{t}$ 为 $t$ 期第 $k$ 个省区的潜在产出增量, $\\omega^{t}$ 为 $t$ 期最大潜在产出增量总和。非能源投入与合意产出的不等式约束代表这两个变量具有强可处置性,能源投入与非合意产出的等式约束代表它们是弱可处置的,决策单元的权重 $z$ 的非负性约束说明模型满足规模报酬不变假设。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## matlab 程序\n",
    "\n",
    "``` matlab\n",
    "clc;clear;\n",
    "data = xlsread('C:\\Users\\Administrator\\Desktop\\数据.xlsx');\n",
    "x = data(2:4,:) ; y = data(5:6,:);\n",
    "t = 10; % 年份\n",
    "k = 12; % 省份\n",
    "LB = [-1000000*ones(k,1);zeros(k*k,1)];  UB = [];\n",
    "\n",
    "for i = 1:t\n",
    "    f = -[ones(1,k),zeros(1,k*k)]';   % 目标函数\n",
    "    \n",
    "    for j = 1:k\n",
    "        xx(:,j) = x(:,i+(j-1)*t);\n",
    "        yy(:,j) = y(:,i+(j-1)*t);\n",
    "    end\n",
    "    \n",
    "    Aeq = []; beq = []; A = []; b = [];\n",
    "    for j = 1:k\n",
    "        Aeq = [Aeq ; zeros(2,k*j),[xx(3,:);yy(2,:)],zeros(2,k*(k-j))];\n",
    "        beq = [beq ; xx(3,j) ; yy(2,j)];\n",
    "        \n",
    "        A = [A; zeros(2,k*j),xx(1:2,:),zeros(2,k*(k-j))];\n",
    "        a = zeros(1,k); a(1,j)=1;\n",
    "        A = [A; a,zeros(1,k*(j-1)),-yy(1,:),zeros(1,k*(k-j))];\n",
    "        b = [b; xx(1:2,j)];\n",
    "        b = [b; -yy(1,j)];\n",
    "    end\n",
    "    w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB);\n",
    "end\n",
    "\n",
    "```"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}