0-1规划中并行隐枚举法的实现方式
隐枚举法的定义

隐枚举法
一种特殊的分支定界法.对0-1规划问题.利用变量只能取0或1的两个值的特性,进行分支定界,以达到隐枚举的目的.基本思路是:通过变量的变换,使目标函数中的系数全为非正.首先令全部变量取0,因为目标函数的系数全非正,所以此解相应的目标函数值s=0就是上界.若可行,则此解为最优解,计算终止.否则,有选择地指定其中某个变量为0或1,并把它们固定下来(称为固定变量),将问题分解成两个子问题.然后,分别对它们进行检验,即对未被固定取值的变量(称为自由变量),令其全部为0,检查它们与固定变量所组成的解是否可行.若可行,则此解就是目前最好的可行解(不一定是最优解),不再分支,其相应的目标函数值就是原问题的一个下界;否则,在余下的自由变量中,继续上面的过程.经过检验,或者停止分支,修改下界,或者有选择地将某个自由变量转为固定变量,指定其为0或1,把子问题再分支.如此进行下去,直到全部子问题停止分支,或没有自由变量为止,而以其中最大的下界值所对应的可行解为最优解.。
0-1整数规划与隐枚举法-感受剪枝的魅力

0-1整数规划与隐枚举法-感受剪枝的魅力作者:llhthinker整数规划是线性规划的特殊情况,即当约束条件是变量为整数时,线性规划就变成了整数规划。
若要求所有变量都为整数,即为纯整数规划;若允许存在一部分变量不一定为整数,则称为混合整数规划。
而本文要讨论的0-1整数规划则是纯整数规划的特殊情况,即所有变量要么等于0,要么等于1,故这种变量又成为逻辑变量。
0-1整数规划在生活中还是很常见的,通常可以总结为“是”“否”问题。
例如,有n个产品销地x1,...,xn可供选择,为使得利润最大,那么每一个销地都面临是否选择的问题,通常还会有一些限制条件,由于销地xi与销地xj距离较近,所以规定若选择xi就不能选择xj等。
那么如何求解0-1规划问题?最朴素的方法是枚举,即将所有销地是否被选择的情况都考虑,那么就是从{0, ... ,0}枚举到{1, ... ,1},需要2的n次方的枚举次数。
显然,当n较大时,这种方式的效率就非常低。
本文要介绍的隐枚举法就可以提高求解出最优解的效率。
所谓隐枚举法,从字面上理解,就是隐去一些不需要枚举的情况,下面从一个例子出发,来给出隐枚举法的步骤。
【例】求解下列规划问题max z = 8*x1 + 2*x2 - 4*x3 - 7*x4 -5*x5;s.t.{3*x1 + 3*x2 + x3 + 2*x4 + 3*x5 <=>5*x1 + 3*x2 - 2*x3 - x4 + x5 <=>xi = 0或1,i = 1, ..., 5}1. 预处理首先需要对原问题进行预处理,至于为什么后文将会解释。
预处理的步骤如下:1) 将目标函数统一为求最小值,即'min', 同时将约束条件都化为'>='。
•若原约束条件为'<>•若原约束条件为'Ai * X = bi',则化为'Ai * X >= bi' 和'-Ai * X >= -bi',其中Ai为系数行向量,X为变量列向量。
第四讲 0 1整数线性规划要点

? ??
x25 、? 项x1目3和4只能选中一项 x3i 、? 项0,1目5被i ?选1中,2,的? 前,5提是项目 1被选中;如何
在 满足上述条件下选择一个最好的投资
解:设 xi为决方策案变,量使(投i资? 1收,2益,?最,5大)
?1 投资第i个项目
xi ? ?
?0 不投资第i个项目
项目
1 2 3 4
整数规划建模举例
练习1 :组合投资问题。
某财团有 B 万元的资金,经过其考察选中 n个投资
项目,其中第 j个项目需投资金额为 a j 万元,预
计获利 c j( j ? 1,2..., n)万元,由于种种原因,
有两个附加条件:第一,项目 2和项目3至少选择一
个;第二项目 5,6,7恰好选择两个。问应如何选
例1:一个旅行者要到某地作两周的带包旅行 ,装背包时,他 发现除了已装的必需物件外,他还能再装5公斤重的东西.他 打算从下列4种东西中选取,使增加的重量不超过5公斤又 能使使用价值最大.这4种东西的重量和使用价值( 这里用打 分数的办法表示价值) 如下表所示,问旅行者应该选取哪些 物件为好?
解:建立模型为 max Z=6x 1 ? 7 x 2 ? 3 x3 ? 9 x4
在 满足上述条件下选择一个最好的投资
解:设 xi为决方策案变,量使(投i资? 1收,2益,?最,5大)
?1 投资第i个项目
xi ? ?
?0 不投资第i个项目
项目
1 2 3 4
投资额 (万元) 210 300 100 130
投资收益 (万元) 150 210 60 80
Z表示投资效益
5
260
180
max=150*x1+210*x2 +60*x3+80*x4+180* x5; 210*x1+300*x2+100 *x3+130*x4+260*x5 <=600; x1+x2+x3>=1; x3+x4=1; x5<=x1; @bin(x1); @bin(x2); @bin(x3); @bin(x4); @bin(x5);
整数规划与01规划

. y j
1, 0,
采用第 j种方式,即x j 0, 不采用第 j种方式,即x j 0
于是目标函数
min z (k1 y1 c1x1) (k2 y2 c2 x2 ) (k3 y3 c3x3 )
23
0-1型整数规划解法之一(过滤隐枚举法)
解0-1型整数规划最容易想到的方法,和一般整数规 划的情形一样,就是穷举法,即检查变量取值为0或1 的每一种组合,比较目标函数值以求得最优解,这就 需要检查变量取值的2n个组合。对于变量个数n较大 (例如n>10),这几乎是不可能的。因此常设计一些 方法,只检查变量取值的组合的一部分,就能求到问 题的最优解。这样的方法称为隐枚举法(Implicit Enumeration),分枝定界法也是一种隐枚举法。当然, 对有些问题隐枚举法并不适用,所以有时穷举法还是 必要的。
24
例6
Max
z 3x1 2x2 5x3
x1 2x2 x3 2
x1 x1
4x2 x2 , x3 0或1
求解思路及改进措施:
1.
先试探性求一个可行解,易看出
且相应的目标函数值为 z 3
(
x1,
x2
,
x3
)
(1,
0,
0)
满足约束条件,故为一个可行解,
z 为 。
14
小结(续)
z z ii)用观察法找问题A的一个整数可行解,一般可取 xj 0, j 1,L , n 试探,求得其目标函数值,并记作 。以 * 表示问题的最优目标 函数值;这时有 z z* z
其次,进行迭代。
第一步:分枝,在B的最优解中任选一个不符合整数条件的变量xj,其值为bj,以[bj]
表示小于bj的最大整数。构造两个约束条件: x j [bj ] x j [bj ] 1
0-1规划中并行隐枚举法的实现方式

I PLEM ENTI M NG APPRoACH FoR PARALLEL I PLI T M CI ENUM ERATI oN N 1 PROGRAM M D I 0. G
Z n n e g Ya
( eat etfC m ue Si c n e nl y C nrl hn o lU i rt,W h n私 0 7 , ue, hn ) Dp r n o p t c nea dTc o g , et i N r nv sy u a m o r e h o a C a ma ei D 9 H biC ia
An d,t ee i s mei r v me t d n t ei l i e u r t n O t ep o lm ih i h r e a c mp t g c n b 6v d b a all h r s o mp o e n ma eo h mp i t n me ai ,S r b e wh c s a d t s r l o u i a e s 1e y p r l c o h o i n e
mea in meh d i h e t y t o v t r t t o st e b s s l ei o wa o .Ac o dn ec aa trs co aa ll o u i g tc l s le bg a d c mp e r be a t c r ig t t h r c eit f r l mp t ,i al ov i n o l xp o lmsf s. oh i p ec n A t o o ii g t ep allc mp t g wi h mp i i e u r t n i p e e t d i i p p rt e o v h r b e me t n d a o e me d c mb n n h a l o u i t t e i l t n me ai s r s n e t s a e r s le t e p o l m n i e b v . h r e n h c o n h o o
关于求解0_1型整数规划的若干问题

0 前言化问题,可知最优解的目标函数一定不小于 5。
为此,在求最优解之前先增加一个约束条件,即过滤0- 1 型整数规划是整数规划的特例,其数学模型的目 条件:3x - 2x +5x !5##⊙ 标函数、约束条件与线性规划相同,不同的是其变量只能1 2 3 过滤条件的作用是:在检验一个解是否为可行解之取 0 和 1,分别表示两种截然相反的结果。
0- 1 型整数规前,先看目标函数是否不小于 5,若小于 5,则肯定不是最 划应用很广,如土木工程系统的最优工程配置问题,城建优解,其可行性无须再检验而直接被淘汰,可以大大减少规划中的居民点、给水点、加油站和商业网点的最优布局计算工作量。
问题,均可应用 0- 1 型整数规划求得最优解。
有了过滤条件,就可以列表计算。
对解集中的解逐个检0- 1 型整数规划的数学模型如下:验,先检验过滤条件,若不符合则直接淘汰该解;若符合条 目标函数:件⊙,再按①~④顺序检验每一个约束条件,当某一个约 束条件不满足时即行淘汰,其右边的约束条件再无检验 约束条件:的必要。
这样,计算工作量可大为减少。
本例中有 3 个变量,共有 23=8 个解需要检验,通过计 算求得的最优解为: .本例以 为初始可行解,通过建立过滤条1 求解 0- 1 型整数规划三种通用的方法 件,只计算了 18 次就找到了最优解,而用穷举法需要计算1.1 穷举法40 次,技术工作量大大减少了。
如在求解过程发现更好的 由于 0- 1 型整数规划的变量个数有限且取值非 0 即可行解及时更换过滤条件 ,计算工作量还可进一步减少。
1,所以不难将解的集合找出来,再检验每个解的可行性, 1.2.2 对隐枚法法 I 的评价 凡符合全部约束条件者均为可行解,通过比较目标函数 对隐枚举法 I 来说其数学模型无须转化为标准型,减的值便可找到最优解,这个解法称为穷举法。
当变量和约 少了人工处理的工作量,但它需要检验的方案较多,而且 束条件很多时,其工作量是非常大的。
解 0—1 规划的隐枚举法

(5)解 0—1 规划的隐枚举法解 0—1 规划的隐枚举法有其独特的工作程序,具体过程如下。
a.模型转化为求极小的问题b.变量替换。
极小问题模型的目标函数中所有变量系数为负的0—1变量,可利用变量替换x k=1-x'k (x'k是引入的新的0—1变量),将目标函数中所有变量系数化为正数。
c.目标函数中变量按系数大小排列,约束条件中变量排列顺序也相应调整。
d.按目标函数值由小到大的顺序依次排列可能的解,并予以可行性检验。
e.发现求极小问题的最优解并停止。
f.转化为原问题的最优解。
例4 用隐枚举法求解下列0—1规划问题Max Z=3x1+2x2-5x3-2x4+3x5x+x2+x3+2x4 +x5≤417x1 +3x3-4x4+3x5≤811x1-6x2 +3x4 +5x5≥3x=0, 1, j=1, 2, 3, 4, 5.j解:①转化为求极小的问题Min Z=-3x1-2x2+5x3+2x4-3x5-x1 -x2-x3-2x4 -x5≥-4-7x1 -3x3+4x4-3x5≥-811x1 -6x2 +3x4 +5x5≥3x=0, 1, j=1, 2, 3, 4, 5.j②令x'1=1-x1, x'2=1-x2, x'5=1-x5, 带入极小问题模型中,得Min Z=3 x'1+2 x'2+5x3+2x4+3 x'5-8x'+x'2-x3-2x4 +x'5≥-117x'1 -3x3+4x4+3x'5≥2-11x'1 +6x'2 +3x4-5x'5≥-7x=0, 1, j= 3, 4; x'j =0, 1, j= 1, 2, 5.j③目标函数中变量按系数大小排列,约束条件中变量排列顺序也相应调整,得Min Z=5x3+3 x'1+3 x'5+2 x'2+2x4-8-x3+x'1 +x'5+x'2-2x4 ≥-1 ①-3x3+ 7x'1 +3x'5 +4x4≥2②-11x'1 -5x'5+6x'2 +3x4≥-7 ③x=0, 1, j= 3, 4; x'j =0, 1, j= 1, 2, 5.j④按目标函数值由小到大的顺序排列可能的解,并予以可行性检验。
0-1规划的隐枚举法

2013—2014(2)专业课程实践论文题目:0-1规划的隐枚举法一、算法理论 0—1规划在整数规划中占有重要地位,一方面因为许多实际问题,例如指派问题、选地问题、送货问题都可归结为此类规划,另一方面任何有界变量的整数规划都与0-1规划等价,用0—1规划方法还可以把多种非线性规划问题表示成整数规划问题,所以不少人致力于这个方向的研究.求解0—1规划的常用方法是分枝定界法,对各种特殊问题还有一些特殊方法.线性模型中,当变量的取值只能是“0”或“1”时,称之为“0-1规划问题”。
有种极其简单的解法,就是将变量取值为0或1的所有组合列出,然后分别代入目标函数,选出其中能使目标函数最优化的组合,即为最优解。
但是真的这样会做很多无用功,浪费大量资源,所以,需要改进方法.本文主要介绍隐枚举法的应用原理,意在剖析其“隐"在何处.从而帮助读者更好地应用这种方法。
和线性规划问题一样,首先需要将模型标准化。
标准化对0-1规划问题提出四点要求:1。
目标函数为最小优化2.目标函数中变量的系数都为正3。
在目标函数中,变量按系数值从小到大排列,则约束函数中,变量的排列次序也做相应改变。
4.所有变量均为0或10-1线性规划的基本形式是1min nj jj Z c x ==∑011,2,,..1,2,,j ij j j x j m s t a x b i n ==⋅⋅⋅⎧⎪⎨≤=⋅⋅⋅⎪⎩∑或function [intx,intf] = ZeroOneprog(c,A,b,x0)%目标函数系数向量,c%不等式约束矩阵,A%不等式约束右端向量,b%初始整数可行解,x0%目标函数取最小值时的自变量值,intx%目标函数的最小值,intfsz = size(A);if sz(2) < 3[intx,intf] = Allprog(c,A,b);%穷举法else[intx,intf] = Implicitprog(c,A,b,x0); %隐枚举法endfunction [intx,intf] = Allprog(c,A,b)sz_A = size(A);rw = sz_A(1);col = sz_A(2);minf = inf;for i=0:(2^(col)-1) %枚举空间x1 = myDec2Bin(i,col);%十进制转化为二进制if A*x1 >= b %是否满足约束条件f_tmp = c*x1;if f_tmp 〈 minfminf = f_tmp;intx = x1;intf = minf;elsecontinue;endelsecontinue;endendfunction[intx,intf] = Implicitprog(c,A,b,x0)%隐枚举法sz_A = size(A);rw = sz_A(1);col = sz_A(2);minf = c*x0;A = [A;—c];b = [b;-minf];%增加了一个限制分量for i=0:(2^(col)—1)x1 = myDec2Bin(i,col);if A*x1 >= bf_tmp = c*x1;if f_tmp 〈 minfminf = f_tmp;b(rw+1,1) = —minf;%隐枚举法与穷举法的区别在于此句 intx = x1;intf = minf;elsecontinue;endelsecontinue;endendfunction y = myDec2Bin(x,n) %十进制转化为二进制str = dec2bin(x,n);for j=1:ny(j) = str2num(str(j));endy = transpose(y);四、算法实现例1.求解下面0—1规划()⎪⎩⎪⎨⎧=≥++++≥++++++++=105224287453232min 54321543215432154321或,x ,x ,x ,x x x x x x x x x x x x ,s.t.x x x x x x f解:在MATLAB 命令框在输入下列命令:〉〉 c=[1 2 3 1 1];>> A=[2 3 5 4 7;1 1 4 2 2];>〉 b=[8;5];>〉 x0=[1;1;1;1;1];>> [intx,intf]=ZeroOneprog (c ,A,b,x0)所得结果如下:1231231231213123max 3252244..346,,01z x x x x x x x x x s t x x x x x x x =-++-≤⎧⎪++≤⎪⎪+≤⎨⎪+≤⎪⎪⎩为或 解:在MATLAB 命令框在输入下列命令:>> c=[—3,2,—5];〉> A=[—1,—2,1;-1,—4,—1;-1,—1,0;—4,0,-1]; >> b=[-2;-4;—3;-6];〉> x0=[1;0;0];>〉 [intx,intf]=ZeroOneprog (c ,A ,b,x0)123412341234124min 3721648..53501,1,2,3,4j z x x x x x x x x x x x x s t x x x x j =+-+-+-≥⎧⎪-++≥⎪⎨++≥⎪⎪==⎩或 解:在MATLAB 命令框在输入下列命令: >〉 c=[3,7,-1,1];A=[2,-1,1,-1;1,—1,6,4;5,3,0,1]; b=[1;8;5];>> x0=[1;1;1;1];〉〉 [intx,intf]=ZeroOneprog (c,A,b ,x0)123123123123max 62323352..2401,1,2,3j z x x x x x x x x x s t x x x x j =++++≤⎧⎪-+≥⎪⎨++≤⎪⎪==⎩或解:在MATLAB 命令框在输入下列命令: 〉> c=[-6,—2,-3];A=[-1,-2,—1;3,—5,1;—2,-1,—1]; b=[-3;2;-4];x0=[1;0;0];[intx ,intf ]=ZeroOneprog (c ,A ,b,x0)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 7期
曾艳: 0 1规划中并行隐枚举法的实现方式
269
2 0 1规划问题并行算法设计
3 应用实例
2. 1 算法设计基本原理
0 1 规划问 题中 各个 状态的 处理 计算是 唯一 的, 本文中 以
隐枚举法 ( Im plic it Enum eration M ethod) 是 Ba las E 在 1965 年提出的, 是以 0 1整 数规划 为背 景建 立的。它 只检查 一部 分 变量组合, 在这 过程中根据已 有信息自 动舍弃 许多不 可能成 为 最优解的组合, 求得最优解, 从 而大大 减少了 工作量 [ 4, 5] 。隐 枚 举法只需比较目标函数在一小部分组合点上的取 值大小就能求 得最优解和最优值。弥补了完全枚举法迭代次数过大的缺 点。
各个状态为对象, 每个节点 (或 从进程 ) 处理等 量的状态 数。假
设有 n个变量, 即个 2n 状 态, 有 m + 1个进程。
算法基本原理如 下:
1) 程序初始化生成 m + 1个进程 , 每 个进 程 ID 号分 别为
0, 1, !, m - 1, m。
2) 进程 0作为主处理 器, 其操作 包括 两个方 面的 内容: ∀
分析: 这个问题转换成数学模型为:
M = 3x1 + 6x2 + 2x3 + 3x4 + 7x5 + x6∃ 15 求:
Z = M ax{ 4x1 + 7x2 + 5x 3 + 7x 4 + 8x5 + 15x 6 } 式中, x 1, x2, x3, x4, x5, x6 的取值为 0或 1。 这个实例中一共有 6个变量, 共有 64个状态。 ( 1) 用串行完全枚举法求解 目标函数需要计算 64次, 约束条件需要计算 64 次, 总共 需 要计算 128次。当 { x1, x2, x3, x 4, x 5, x6 } = { 1 1 1 1 0 1}时, m = 15, Z = 38。 ( 2) 用并行隐枚举法进行求解 设从处理器数目为 4。 S tep 1 将状态数进行分组, 先试探 性求一 个可行 解, 易 看 出 { x 1, x 2, x 3, x4, x5, x 6 } = { 0, 0, 0, 0, 0, 1} 满足约束 条件, 故 为一个可行解, 且相应的目标函数值为 Z = 15, 将 4x1 + 7x2 + 5x3 + 7x 4 + 8x5 + 15x6 % 15 作为过 滤条件, 在 从进程 中计算 出每 个 状态的目标函数值, 如表 1所示。
1 并行计算与隐枚举法
并行计算是 指同 时使 用多 种计 算资 源解 决计 算问 题的 过
程。它是相对于串行计算 而言的, 所谓 的并行 计算分 为时间 上 的并行和空间上的并行, 时间上的并行就是指流水线技术, 而 空 间上的并行则是指用多个处理器并发的执行计算。集群系统 逐 渐成为高性能并行计算的 主要硬 件平台, 它是 将一组 相互独 立 的计算机通过高速 的通 信 网络 而组 成的 一个 单一 的计 算机 系 统, 并 以单一系统 的模 式进 行管 理 [ 1] 。并 行计 算的 主要 目的: 一是为了提供比传统计算 机快的 计算速 度; 二 是解决 传统计 算 机无法解决的问题。
第 27卷第 7期 2010年 7月
计算机应用与软件 Com puter ApplicatioJu.l 2010
0 1规划中并行隐枚举法的实现方式
曾艳
( 华中师范大学计算机科学与技术系 湖北 武汉 430079 )
摘 要 0 1规划中, 当变量较大时, 状态数 过多、时间耗费较大, 隐枚举法是目前解 决 0- 1规划问 题最有效 的方法, 并行计算 的 特点是快速解决大型 且复杂的计算问题。结合并行计算和隐枚举法来解决这个问题, 并且对隐枚举法做了一定的改进, 使得在串 行 计算中难以实现的问 题在并行计算机上得到了解决, 并用实例验证了算法 的可行性和优越性。 关键词 0 1规划 并行 计算 隐枚举法
M P I(M essage P assing Interface) 是消 息传 递并 行程 序设 计 的标准之一, 是目前最主要的并行环境。它适用 于基于分布 内 存的并行计算机系统的 消息 传递模 型, 具有 移植性 好、功能 强 大、效 率高等多种特点, 而且 有多种 不同 的免费、高 效、实用 的 实现版本, 几乎所有的并行计算机厂商 都提供 对它的 支持, 这 是其他并行环境无法比拟的 [ 2, 3] 。
{ part_b est[ i] = z[ k] ; }
break; }
state[ i] = 0; If( part_best[ i] > glo_best) glo_b est= p art_best[ i] ; / /将局部 最优解 和全局最优解进行比较
} 主进程输出最后结果, 程序结束。
一个旅行者有一个最多能装 15公斤的背包, 现在有 6件 物 品, 它们的重量 分别是 3, 6, 2, 3, 7, 1; 它们的价 值分别为 4, 7, 5, 7, 8, 15; 若每种物品只有一件, 求旅行者能获得最大总价值 Z。
39
{ 1, 1, 0, 0, 0, 0}
11
4
!!
!!
{ 1, 1, 1, 1, 1, 1}
46
S tep 2 在各个从进程中根据过 滤条件删 除目标 函数值 小 于 15 的状 态, 然后 按照目 标函 数值从 大到 小将状 态进 行排 序 (各从进程最终结果数如表 2所示 ), 并且计算约 束条件, 如表 3 所示。
核心算法如下: 初始化: 将 2n个状态划分成 m 个状态组, 并分配给各个从进程, state
[ i] = 1 试探性求一个满足约 束条件 的可 行解, 计算出 相应 的目 标函 数值
为Z W h ile(存在 s tate[ i] = = 1)
{ 对于从进程 ,i 寻找局部最优解 For( j= 1; j< = 2n /m; j+ + ) { 求出所有状态的目标值 z[ j] ; If(状态 j的目标函数值小于 Z) {删除相应的状态; } } 将目标函数值大于等于 Z的状态数按照目标值进行从大到小排序 For( j= 1; j< = s; j+ + ) { / / s为目标函数值大于等于 Z的状态数 If( 状态 j满足约束条件 )
K eywords 0 1prog ramm ing P ara lle l computing Im plic it enum eration me thod
0引 言
对于有 n 个变量 的 0 1规划 问题, 由 于每个 变量 只取 0、1 两个值, 故 n 个变量所有可能的 0 1组合数 有 2n 个。在现 实生 活中, 很多问题 都可 以 转换 成 0 1规 划 问题, 比 如 席位 分配 问 题、排序问题、资源配置问题等 , 而对于 0 1规划的问 题, 目 前最 普遍的解 法就是枚 举法, 即检查变量 取值为 0 或 1的每一 种组 合, 比较目标函数值以求 得最优 解。在此基 础上人 们采用 了隐 枚举法、遗传 算法、动态规划 法等方法, 虽然在 一定程度上 加快 了求解速度、缩短了问题的解决时间, 但 这些方法都是基于串行 计算来实现的, 只能当变 量较小 时来达 到优化 的目的。但 是当 n较大时, 比如: 当 n= 64时, 264 1. 845 1019, 以每秒 解决 107 种状态的速度, 则需要 5. 85 104年, 用串行 计算根 本是不 可能 的。并行计算能同时使 用多种 计算资 源解决 计算问 题, 能 快速 解决大型且复杂的计 算问题, 是当前 世界上 主要用 于解决 大规 模、高精度问题的 方法, 它 能解 决很 多串 行计 算不 能解 决的 问 题。目前国内外对用并行算法 来解决 0 1规划 问题的研究 并不 多, 基于 0 1规划问题在 生活 中的重 要性 以及并 行算 法的 高效 性, 本文对用并行隐枚举 法来 解决 0 1规 划的问 题进 行了 一定 的探讨。
将 2n 个状态划分为 m 个状态组, 并且将这 m 个状态组分配给 m
个相应的从进程; # 检查是 否有从进 程向其 发送满 足条件 的局
部 最 优解, 若 有则 接 受 消 息, 并 且 与当 前 的 全 局最 优 解 进 行
比较。
3) 进程 1, 2, !, m, 作为从进程, 其操作包 括两个方面 的内 容: ∀ 接受主 进程发送 来的状态组, 在局 部区域内进 行搜索, 得 到一个局部最 优解; # 将局 部最 优解 发送 给主 进程, 等 待新 的 任务。
4) 直到所有的从进程计算完毕, 将局部最优解发送给 主进 程, 主进程得到最后的全局最优解。
2. 2 算法具体实现
设有 2n个状态, m 个从进程, g lo _best为 主进程 中记录 全局 最优解的变量, part_best[ i] ( i= 1 to m )为相对应的 m 个从进程 中的记录局部最优解的变量, state[ i] ( i= 1 to m ) 记录从进 程的 状态, sta te[ i] = 0表 示从进 程 i空 闲, group [ i] 记录从 进程 i中 所接受到需要 处理 的状 态。假 设所 需要 求的 最优 解是 极大 值 问题。
进程号
表 1 从进程状态分配情况
各个进程的状态
目标函数值
{ 0, 0, 0, 0, 0, 0}
0
1
!!
!!
{ 0, 0, 1, 1, 1, 1}
35
{ 0, 1, 0, 0, 0, 0}
22
2
!!
!!
{ 0, 1, 11, 1, 1}