function[jie,fval,exflag,time]=intopt(f,a,b,intbegan,aeq,beq,lb,ub)
%这是一个求解整数规划的函数,当不入intbegan的值时默求解线形规划问题
%f,a,b为必须输入的参数,f为目标函数,A*X<=B为不等式约束
%aeq,beq为等式约束,默认为空
%ub为原问题可行域的最大范围,默认为无穷大
%lb为可行域的最小值,默认为0
%intbegan表示从哪一位开始是整数约束,注意要包括这一位,默认为可行解的维数加上1;原问题变成一个线形规划问题
%time表示分支的次数,即分支多少次后得到整数解
%
tic
n=length(f);
if nargin<8 ub=inf*ones(n,1);
if nargin<7 lb=zeros(n,1);
if nargin<6 beq=[];
if nargin<5 aeq=[];
if nargin<4 intbegan=n+1;
end
end
end
end
end
[jie,fval,exflag]=linprog(f,a,b,aeq,beq,lb,ub)
global optjie;
global optfval;
global time;
time=0;
optfval=inf;
optjie=[0;0];
[jie,fval,exflag]=branch(f,a,b,aeq,beq,lb,ub,intbegan);
disp('成功了!');
exflag=1;
disp('最优解为optjie=');
optjie
disp('最优结果为');
%optfval=f'*optjie
disp('分支的次数为time=');
time
jie=optjie;
fval=optfval;
toc