{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# BCC 模型\n",
    "## 原理\n",
    "$$\n",
    "\t\\max  \\mu Y_0-\\mu _0\\\\\n",
    "\t\\text{s}.\\text{t}.\\left\\{ \\begin{array}{c}\n",
    "\t\\omega X_i-\\mu Y_i+\\mu _0\\ge 0,\\quad i&=1,...,n\\\\\n",
    "\t\\quad \\omega X_0=1\\\\\n",
    "\t\\omega \\ge 0,\\mu \\ge 0\\\\\n",
    "\\end{array} \\right.\\tag{1}\n",
    "$$\n",
    "\n",
    "转换为对偶模型:\n",
    "\n",
    "$$\n",
    "\\min Z^{0} \\\\\n",
    "\\left\\{\\begin{array}{l}\n",
    "\\sum_{j=1}^{n} X_{j}^{0} \\lambda_{j} \\leq Z^{0} X_{0}^{0} \\\\\n",
    "\\sum_{j=1}^{n} Y_{j}^{0} \\lambda_{j} \\geq Y_{0}^{0} \\\\\n",
    "\\sum_{j=1}^{n} \\lambda_{j}<1 \\\\\n",
    "\\lambda_{j} \\geq 0, j=1,2, \\cdots n\n",
    "\\end{array}\\right.\\tag{2}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## matlab 程序\n",
    "```matlab\n",
    "clc; clear;\n",
    "\n",
    "% 1.添入数据\n",
    "x = [ ]; y = [ ];  % 其中 x 表示输入变量,y 表示输出变量\n",
    "\n",
    "% 2.确定参数\n",
    "n = size(x,1);   % 输入变量 x 的行数\n",
    "m = size(x,2);   % 输入变量 x 的列数\n",
    "s = size(y,2);   % 输出变量 y 的列数\n",
    "\n",
    "% 3.线性规划\n",
    "A = [-x, y, ones(n,1)];           % 约束矩阵\n",
    "b = zeros(n,1);                   % 约束增广矩阵\n",
    "LB = zeros(m+s+1,1);  UB = [];    % 带估计参数取值范围,均 ≥0\n",
    "for i=1:n\n",
    "    f = [zeros(1,m), -y(i,:), 1]; % 目标函数 min\n",
    "    Aeq = [x(i,:), zeros(1,s+1)];    \n",
    "    beq = 1;                      % 约束等式\n",
    "    w(:,i) = linprog(f,A,b,Aeq,beq,LB,UB);\n",
    "    E(i,i) = y(i,:)*w(m+1:m+s,i);\n",
    "    theta(i) = E(i,i);\n",
    "end\n",
    "w        % 权重向量\n",
    "theta    % 输出相对效率值\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
}