一、普通优化问题分枝定界求解
题目的原问题为
在计算过程中,利用MATLAB中的linprog()函数进行求解最优解,具体的计算步骤如下:
A为约束系数矩阵,B为等式右边向量,C为目标函数的系数向量。
进行第一次最优求解以A=[2 9;11 -8],B=[40;82],C=[-3,-13]利用linprog函数求解。解得x1=9.2,x2=2.4,都不是整数,选定x1进行分枝操作。以x1<=9,x1>=10为约束条件进行下一次的分枝,此时求得的最大值为-58.8。
对于x1<=9 以A=[2 9;11 -8;1 0],B=[40;82;9],C=[-3,-13]进行求解,求得的解x1=9,x2=2.444,最大值为-58.7778。x110以A=[2 9;11 -8;-1 0],B=[40;82;-10],C=[-3,-13]求解,发现无界。接下来对x2进行分枝,以x2<=2,x2>=3进行分枝操作。
对于x2<=2以A=[2 9;11 -8;1 0;0 1],B=[40;82;9;2],C=[-3,-13]进行求解,求得的解x1=8.9,x2=2.0,最大值为-52.7273。由于是在x1<=9的条件下进行分枝的,此次迭代中不能再对x1进行分枝,转而x2>=3以A=[2 9;11 -8;1 0;0 -1],B=[40;82;9;-3],C=[-3,-13]进行求解,求得的x1=6.5,x2=3,最大值为-58.5,x2为整数,所以接下来对x1继续进行分枝,以x1<=6,x1>=7进行分枝操作。
对于x1<=6以A=[2 9;11 -8;1 0;0 -1;1 0],B=[40;82;9;-3;6],C=[-3,-13]进行求解,解得x1=6,x2=3.111,求得的最大值为-58.444,因为x1为常数,则接下来对x2进行分枝操作。对于x1>=7以A=[2 9;11 -8;1 0;0 -1;-1 0],B=[40;82;9;-3;-7],C=[-3,-13]进行求解,发现无解。接下来以x2<=3,x2>=4进行分枝操作。
对于x2<=3以A=[2 9;11 -8;1 0;0 -1;1 0;0 1],B=[40;82;9;-3;6;3],C=[-3,-13]进行求解,解得x1=6,x2=3,求得的最大值为-57,求得的解和最大值都为整数。对于x2>=4,以A=[2 9;11 -8;1 0;0 -1;1 0;0 -1],B=[40;82;9;-3;6;-4],C=[-3,-13]进行求解,解得x1=2,x2=4,求得的最大解为-58,求得的解和最大值也都为整数。相较于x2<=3和x2>=4的情况x2>=4的情况时求得的最大值更大,此时解和最大值都为整数,所以不再进行分枝。最后,得到最优解为(2 ;4),最大值为58,分枝定界完毕。为了接下来更清楚的观察整个过程,将展示树图的分枝定界。
二、旅行商问题(规约矩阵)
旅行商问题是一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地。应如何选择行进路线,以使总的行程最短。旅行商问题可以通过好多方法来求解,这里主要应用分支界定法来进行求解。原问题如下所示,求解五个城市之间的TSP问题。
此5×5矩阵表示五个城市之间的代价,第一行第三列的1表示从第一个城市到第三个城市的代价为1,第三行第一列的5表示从第三个城市到第一个城市的代价为5,所以两个城市之间的来返代价并不一样。为了方便后续表述,将五个城市分别记为城市a,b,c,d,e。且将城市自身的代价记为∞,则重新将TSP问题进行表述为
上述矩阵为重新表述的TSP问题。利用规约矩阵对TSP问题的代价进行计算,具体的代价计算公式为
其中Cc为总的代价,为CA约束下的代价,w(A,C)为具体城市到城市之间的代价,C1’为当前代价。利用规约矩阵,以a城市为出发点的代价下限计算如下:
其中,C列的绝对值之和为当前代价C1’,在对矩阵进行操作时,看每行每列是否有零,若没有则减去最小的数值,若有零则不减。则从城市a出发,可以到达其他的四个城市,分枝定界图和规约矩阵如下:
a的代价为对B矩阵的C列绝对值进行求和得C1’=8。接下来对a到b,a到c,a到d和a到e之间的代价进行计算,具体的规约矩阵如下:
在矩阵B的基础上,进行计算,将涉及到的城市的代价写为无穷:
利用计算代价公式得
由上式计算结果可见,从a城市到c城市的代价最小,再从c城市出发,可以到达的城市有城市b,d,e,分枝定界图和规约矩阵如下:
由上式结果可见从a到c到b的代价最大,从a到c到d和从a到c到e的代价一样 ,接下来继续计算这两条路径的代价,从a到c到d还可以走b和e,从a到c到e还可以走b和d。分枝定界图和规约矩阵如下:
利用公式计算代价得
由以上结果可见从a到c到d到b的代价于a到c到d到e的代价和a到c到e到b的代价都是一样为11,从a到c到e到d的代价最小为8,再接下来就只考虑从d出发到城市b的代价和从b城市重新回到城市a的代价分枝定界图和规约矩阵如下:
至此,求出了旅行商问题的最优解,最优路径为a→c→e→d→b→a,对应于数字为1→3→5→4→2→1代价为8。文章来源:https://www.toymoban.com/news/detail-598268.html
注:旅行商问题中涉及到规约矩阵,不懂的读者可以先行了解规约矩阵文章来源地址https://www.toymoban.com/news/detail-598268.html
到了这里,关于整数规划——分支界定算法(旅行商问题,规约矩阵求解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!