分枝定界法matlab,分支定界法 求混合0-1规划问题
function [x,y]=IntLp(f,G,h,Geq,heq,lb,ub,x,id,options)
%整数线性规划分枝定界法,可求解全整数线性或混合整数线性规划。
% y = min f'*x subject to: G*x <= h Geq*x=heq x为全整数或混合整% 数列向量
%用法
% [x,y]=IntLp(f,G,h)
% [x,y]=IntLp(f,G,h,Geq,heq)
% [x,y]=IntLp(f,G,h,Geq,heq,lb,ub)
% [x,y]=IntLp(f,G,h,Geq,heq,lb,ub,x)
% [x,y]=IntLp(f,G,h,Geq,heq,lb,ub,x,id)
% [x,y]=IntLp(f,G,h,Geq,heq,lb,ub,x,id,options)
%参数说明
% x:最优解列向量; y:目标函数最小值;f:目标函数系数列向量
% G:约束不等式条件系数矩阵;h:约束不等式条件右端列向量
% Geq:约束等式条件系数矩阵;heq:约束等式条件右端列向量
% lb:解的下界列向量(Default: -inf);ub:解的上界列向量(Default: inf)
% x:迭代初值列向量;
% id:整数变量指标列向量,1-整数,0-实数(Default: 1)
% options的设置请参见optimset或lingprog
%例 min Z=x1+4x2
% s.t. 2x1+x2<=8
% x1+2x2>=6
% x1, x2>=0且为整数
%先将x1+2x2>=6化为 - x1 - 2x2<= -6
%[x,y]=IntLp([1;4],[2 1;-1 -2],[8;-6],[],[],[0;0])
%胡良剑,孙晓君, Matlab数学实验,高等教育出版社, 2006
global upper opt c x0 A b Aeq beq ID options;
if nargin<10, options=optimset({});options.Display='off';
options.LargeScale='off';end
if nargin<9, id=ones(size(f));end
if nargin<8, x=[];end
if nargin<7|isempty(ub), ub=inf*ones(size(f));end
if nargin<6|isempty(lb), lb=zeros(size(f));end
if nargin<5, heq=[];end
if nargin<4, Geq=[];end
upper=inf;c=f;x0=x;A=G;b=h;Aeq=Geq;beq=heq;ID=id;
ftemp=ILP(lb(:),ub(:));
x=opt;y=upper;
%以下子函数
function ftemp=ILP(vlb,vub)
global upper opt c x0 A b Aeq beq ID options;
[x,ftemp,how]=linprog(c,A,b,Aeq,beq,vlb,vub,x0,options);
if how<=0
return;
end;
if ftemp-upper>0.00005 %in order to avoid error
return;
end;
if max(abs(x.*ID-round(x.*ID)))<0.00005
if upper-ftemp>0.00005 %in order to avoid error
opt=x';upper=ftemp;
return;
else
opt=[opt;x'];
return;
end;end;
notintx=find(abs(x-round(x))>=0.00005); %in order to avoid error
intx=fix(x);tempvlb=vlb;tempvub=vub;
if vub(notintx(1,1),1)>=intx(notintx(1,1),1)+1
tempvlb(notintx(1,1),1)=intx(notintx(1,1),1)+1;
ftemp=ILP(tempvlb,vub);
end;
if vlb(notintx(1,1),1)<=intx(notintx(1,1),1)
tempvub(notintx(1,1),1)=intx(notintx(1,1),1);
ftemp=ILP(vlb,tempvub);
end
分枝定界法matlab,分支定界法 求混合0-1规划问题相关推荐
- 分枝定界法求哈密尔登回路问题的由表及里
刻苦努力的奋斗,终于有了学习成果,虽然写出的仅仅是非常拙略,功能单一的,简单的小程序代码,但不失为在代码学习的进步.总算是有了含有自己智慧在其中的结晶.其实这段代码能够顺利完成,虽然是独立完成,但终究 ...
- python混合整数线性规划_Python 实现整数线性规划:分枝定界法(Branch and Bound)...
今天做作业,要实现整数线性规划的分枝定界法算法.找了一些网上的博客,发现都很屎,感觉自己写的这个比较清楚.规范,所以在此记录.如有错误,请指正. from scipy.optimize import ...
- Python整数规划—分枝定界法
分枝定界法可用于解纯整数或混合的整数规划问题.在本世纪六十年代初由 Land Doig 和 Dakin 等人提出的.由于这方法灵活且便于用计算机求解,所以现在它已是解 整数规划的重要方法.目前已成功地 ...
- Python 实现整数线性规划:分枝定界法(Branch and Bound)
今天做作业,要实现整数线性规划的分枝定界法算法.找了一些网上的博客,发现都很屎,感觉自己写的这个比较清楚.规范,所以在此记录.如有错误,请指正. from scipy.optimize import ...
- 分枝定界法解0/1背包问题
分枝定界法解0/1背包问题 关键词:分支定界.0-1背包 分枝定界法简介 分枝定界法按照树形结构来组织解空间,展开节点后,有两种策略: 策略一.把节点加入 FIFO 队列当中: 策略二.把节点加入到堆 ...
- 分枝定界法的一般步骤
分枝定界法的一般步骤 设有最大化的整数规划问题A ,与它相对应的松弛问题为 B. (1)先不考虑原问题的整数约束,求解相应的松弛问题.用图解法或单纯形法求得最优解,记为 . (2)若求得的最优解 刚好 ...
- 【数学建模入门】整数规划求最优解|分枝定界法求最优解
文章目录 整数规划 分枝定届法 `intprog` `branchbound` 整数规划 intprog() function [x,fval,status] = intprog(f,A,B,I,Ae ...
- 分支定界 matlab,使用MATLAB实现分枝定界法求解整数规划的详细资料说明
分支定界法是一种求解离散最优化问题的计算分析方法.它是由Land Doig和Dakin等人在20世纪60年代初提出的.分支定界法可求纯整数或混合整数线性规划问题,求解方法由分支和定界组成." ...
- 整数规划之分枝定界法
整数规划之分枝界定法 引子: 题目分析: 这个整数规划问题相当于是在简单的线性规划问题上增加了决策变量为整数的限制条件.如果没有这个限制条件,那我们用linprog函数很容易解决如下 >> ...
- 分支定界算法 matlab,分支定界法----整数规划matlab
分支定界法的思想是:首先确定目标值的上下界 发布人:chengxu0921 发布时间:2008-7-21 18:16:27 新闻类别:分支-界限法 例1:设有A,B,C,D,E 5人从事j1,j2,j ...
最新文章
- Excel导入异常Cannot get a text value from a numeric cell解决
- 设计模式-观察者模式
- python list的extend (会将被插入的列表的每个元素从列表中拿出添加到列表中)与append方法(若被插入为列表,会将列表插入到源列表中)区别
- 直播 | Python Web开发者的破局之道
- 【冰极峰教程系列之二】:牢不可破的九宫格布局
- php仓储管理系统 eku_河南物流仓储外包哪里有 极鹭云仓
- 【精品】【分享】盖茨留给职场工作者的十句警告
- 实现俄罗斯方块遇到的问题及游戏下载
- hive like 模糊匹配
- 《CCIE路由和交换认证考试指南(第5版) (第2卷)》——1.2节构建BGP邻居关系...
- 关于MGS4和XSI
- py库: django (web框架)
- Nginx图片剪裁模块探究 http_image_filter_module
- webstorm与Idea禁用自动保存
- Java基础教程【第二章:Java数据类型和变量】
- 项目分析-纷享车链AutoChain的数据保险柜解读
- 微信数据解密-dat查看
- Linux系统版本介绍
- canvas贝塞尔曲线爱心_贝塞尔曲线之爱心点赞代码全解析!| CSDN 博文精选
- jquery stop()方法