function [x,y]=lpint(f,G,h,lb,ub,x,n,id)
% 整数线性规划分枝定界法,可求解线性全整数或线性混合整数规划
% 此程序基于 Matlab 优化工具箱的 lp 函数写成
% 此程序为 GreenSim 团队原创作品,转载请注明
% 欢迎访问 GreenSim 团队的主页 http://blog.sina.com.cn/greensim
%######## y = min f'x### subject to:## Gx <= h# x 为整
%############# x
% 用法
%### [x,y]=lpint(f,G,h)
%### [x,y]=lpint(f,G,h,lb,ub)
%### [x,y]=lpint(f,G,h,lb,ub,x)
%### [x,y]=lpint(f,G,h,lb,ub,x,n)
%### [x,y]=lpint(f,G,h,lb,ub,x,n,id)
% 参数说明
%### x: 最优解列向量
%### y: 目标函数最小值
%### f: 目标函数系数列向量
%### G: 约束条件系数矩阵
%### h: 约束条件右端列向量
%### lb: 解的的下界列向量(Default: -inf)
%### ub: 解的的上界列向量(Default: inf)
%### x: 迭代初值列向量
%### n: 等式约束数(Default: 0)
%### id: 整数变量指标列向量。1-整数,0-实数(Default: 1)
% 举例
%#min Z=x1+4x2
% s.t.#2x1+x2<=8
%##### x1+2x2>=6
%##### x1, x2>=0 且为整数
%先将 x1+2x2>=6 化为 - x1 - 2x2<= -6
%》[x,y]=lpint([1;4],[2 1;-1 -2],[8;-6],[0;0])
% Y. MA & L.J. HU 1999
global upper opt c N x0 A b ID;
if nargin<8, id=ones(size(f));end
if nargin<7|isempty(n), n=0;end
if nargin<6, x=[];end
if nargin<5|isempty(ub), ub=inf*ones(size(f));end
if nargin<4|isempty(lb), lb=zeros(size(f));end