第二章 整数规划
1.1 定义
规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。
1.2 常用的求解方法:
(i)分枝定界法—可求纯或混合整数线性规划。
(ii)割平面法—可求纯或混合整数线性规划。
(iii)隐枚举法—求解“0-1”整数规划:
①过滤隐枚举法;
②分枝隐枚举法。
(iv)匈牙利法—解决指派问题(“0-1”规划特殊情形)。
(v)蒙特卡洛法—求解各种类型规划。
下面将简要介绍常用的一种求解整数规划的方法:
蒙特卡洛法(随机取样法)
对于非线性整数规划目前尚未有一种成熟而准确的求解方法,因为非线性规划本身的通用有效解法尚未找到,更何况是非线性整数规划。然而,尽管整数规划由于限制变量为整数而增加了难度;然而又由于整数解是有限个,于是为枚举法提供了方便。当然,当自变量维数很大和取值范围很宽情况下,企图用显枚举法(即穷举法)计算出最优值是不现实的,但是应用概率理论可以证明,在一定的计算量的情况下,完全可以得出一个满意解。
数模入门之整数规划(matlab软件学习)
如果用显枚举法试探,共需计算100的5次方和10的10次方 个点个点,其计算量非常之大。然而应用蒙特卡洛去随机计算106 个点,便可找到满意解,那么这种方法的可信度究竟怎样呢?
下面就分析随机取样采集106 个点计算时,应用概率理论来估计一下可信度。不失一般性,假定一个整数规划的最优点不是孤立的奇点。
假设目标函数落在高值区的概率分别为 0.01,0.00001,则当计算106 个点后,有任一个点能落在高值区的概率分别为
数模入门之整数规划(matlab软件学习)
解 (i)首先编写 M 文件 mente.m 定义目标函数 f 和约束向量函数 g,程序如下:
function [f,g]=mengte(x); f=x(1)2+x(2)2+3x(3)2+4*x(4)2+2x(5)-8x(1)-2x(2)-3x(3)-… x(4)-2x(5);
g=[sum(x)-400 x(1)+2x(2)+2x(3)+x(4)+6x(5)-800 2x(1)+x(2)+6x(3)-200
x(3)+x(4)+5
x(5)-200];
(ii)编写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<=0)==4 if p0<=f
x0=x1;p0=f; end
end [f,g]=mengte(x2); if sum(g<=0)==4
if p0<=f
x0=x2;p0=f; end
end end x0,p0 toc

相关文章:

  • 2021-04-09
  • 2022-01-07
  • 2021-11-28
  • 2021-11-01
  • 2021-04-22
  • 2021-11-03
猜你喜欢
  • 2021-06-07
  • 2021-04-27
  • 2021-07-03
  • 2021-09-19
  • 2021-11-28
  • 2022-12-23
  • 2021-04-08
相关资源
相似解决方案