(1)对三类的整数规划进行整合与修改,将部分整数规划看作全整数规划的特殊情况,将0-1规划看成是变量介于0到1范围的整数约束的全整数规划,可同时出现在同一个规划模型中。
(2)对基本分支定界法进行一些改进,统一求解三类整数规划模型,比较目标最优值时,不再是全部比较,而是对需要比较的分支才进行比较,然后再定界,效率相对提高一些;
(3)数据结构采用树型存储结构,编写成C++类,求解过程何时分支及分支的条件比较清晰明显;
(4)由于VC调用LINGO接口函数时需执行LINGO源文件,因此封装了对LINGO源文件动态写入变量个数、目标函数、约束条件的类;本文来自辣.文~论^文·网原文请找腾讯324'9114
(5)在求解过程LINGO源文件的执行可能由于输入格式错误或发生其他异常而终止求解。因此将经常出现的错误存入access数据库中,在图形界面中可通过错误代码查看错误信息;
2. 研究现状及设计目标
目前求解整数规划的方法相对比较多,其中比较常见的有割平面法求解全整数规划,隐枚举法求解0-1规划以及基本分支定界法求解全整数规划与部分整数规划。以下是对这三类方法进行简单介绍,并分析各类方法的优缺点,最终选出比较好的方法并改进来求解整合的三类整数规划问题。
2.1. 割平面法求解全整数规划
割平面法(Cutting-Plane Method)由R.E.Gomory[5]于 1958 年首先提出,又称为Gomory割平面法。割平面法是一种搜索算法,通过对相应松弛问题的可行域进行一系列切割,不断缩小整数规划可行解的搜索区域,从而找到整数规划的最优解。
2.1.1. 基本思想
割平面法求解整数规划的基本思路[6]:
先不考虑整数约束条件,求松弛问题④的最优解,如果获得整数最优解,即为所求,计算停止。如果获得的最优解不满足整数约束条件,则在此非整数解的基础上增加新的约束条件重新求解。应用新增加的约束条件去切割相应松弛问题的可行域,即割去松弛问题的部分非整数解(包括原已得到的非整数最优解),而把所有的整数解都保留下来,故称新增加的约束条件为割平面方程。当经过多次切割后,就会在被切割后保留下来的可行域上找到一个坐标均为整数的顶点,它恰好就是所求问题的整数最优解。即切割后所对应的松弛问题,与原整数规划问题具有相同的最优解。
论文网http://www.751com.cn/
其计算步骤[7]如下:
(1)用单纯形法求解(IP)对应的松弛问题(LP):
①若(LP)没有可行解,则(IP)也没有可行解,停止计算。
②若(LP)有最优解,并符合(IP)的整数条件,则(LP)的最优解即为(IP) 的最优解,停止计算。
③若(LP)有最优解,但不符合(IP)的整数条件,转入下一步。
(2)从(LP)的最优解中,任选一个不为整数的分量Xr,,将最优单纯形表中该行的系数 和 分解为整数部分和小数部分之和,并以该行为源行,按下式(1-1)作割平面方程: (1-1)
式中: —— 的小数部分;
—— 的小数部分;
(3)将所得的割平面方程作为一个新的约束条件置于最优单纯形表中(同时增加一个单位列向量),用对偶单纯形法求出新的最优解。用割平面法求解全整数规划例子[8]如下:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
分支定界法求解整数规划问题的设计与实现 第3页下载如图片无法显示或论文不完整,请联系qq752018766