Algorithm之PrA:PrA之IP整数规划算法经典案例剖析+Matlab编程实现
目录
分枝定界法
整数规划例题
0-1整数规划实例
分枝定界法
对有约束条件的最优化问题(其可行解为有限数)的所有可行解空间恰当地进行系统搜索,这就是分枝与定界内容。通常,把全部可行解空间反复地分割为越来越小的子集,称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定界。在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。 分枝定界法可用于解纯整数或混合的整数规划问题。在本世纪六十年代初由 LandDoig 和Dakin 等人提出的。由于这方法灵活且便于用计算机求解,所以现在它已是解整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂选址问题、背包问题及分配问题等。
基本思想:设有最大化的整数规划问题 A ,与它相应的线性规划为问题B ,从解问题B 开始,若其最优解不符合 A的整数条件,那么B的最优目标函数必是 A的最优目标函数z*的上界,记作z上 ;而 A的任意可行解的目标函数值将是z*的一个下界z下。分枝定界法就是将B的可行域分成子区域的方法。逐步减小z 上和增大z下 ,最终求到z*。
用分枝定界法求解整数规划(最大化)问题的步骤为:首先,将要求解的整数规划问题称为问题 A ,将与它相应的线性规划问题称为问题B 。
1、求解下述整数规划
(1)、先利用LP思路求出最优解
(2)、利用IP思路分析解,先对x1进行分枝、定界
(3)、先对B1进行分枝、定界
(4)、还要对B2进行分枝、定界
1、投资场所的选定——相互排斥的计划
解:解题时先引入0 −1变量xi,并进行问题转换 2、引入0 −1变量y,来解决相互排斥的约束条件
3、扩展:利用0-1变量来解决m 个互相排斥的约束条件 如果有m 个互相排斥的约束条件
4、关于固定费用的问题(Fixed Cost Problem)
某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成本就降低;反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加。所以必须全面考虑。今设有三种方式可供选择,令
5、举例说明一种解0 −1型整数规划的隐枚举法
6、蒙特卡洛法求解非线性整数规划
(1)、首先编写M 文件mente.m 定义目标函数f 和约束向量函数g,程序如下
function [f,g]=mengte(x);
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...
x(4)-2*x(5);
g=[sum(x)-400
x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*x(3)-200
x(3)+x(4)+5*x(5)-200];
(2)、编写M文件mainint.m如下求问题的解
rand('state',sum(clock));
p0=0;
tic
for i=1:10^6
x=99*rand(5,1);
x1=floor(x);x2=ceil(x);
[f,g]=mengte(x1);
if sum(g
关注
打赏
- Computer:C语言/C++语言的简介、发展历史、应用领域、编程语言环境IDE安装、学习路线之详细攻略
- DBMS/Database:数据库管理的简介、安装(注意事项等)、学习路线(基于SQLSever深入理解SQL命令语句综合篇《初级→中级→高级》/几十项代码案例集合)之详细攻略
- DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20
- High&NewTech:一文了解计算机思维、数学思维的本质区别,以及算法和程序的认知比较
- Algorithm:【Algorithm算法进阶之路】之十大经典排序算法
- DataScience:数据生成之在原始数据上添加小量噪声(可自定义噪声)进而实现构造新数据(dataframe格式数据存储案例)
- CV:Image.open 和cv2.imread的简介、区别及PIL.Image格式/OpenCV格式相互转换代码实现之详细攻略
- Py之shap:shap.explainers.shap_values函数的简介、解读(shap_values[1]索引为1的原因)、使用方法之详细攻略
- Py之PaddleFL:PaddleFL/paddle_fl的简介、安装、使用方法之详细攻略
- Python语言学习:Python语言学习之正则表达式常用函数之re.search方法【输出仅一个匹配结果(内容+位置)】、re.findall方法【输出所有匹配结果(内容)】案例集合之详细攻略