이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。
혼합정수선형계획법알고리즘
혼합정수선형계획법정의
혼합정수선형계획법(milp)은다음조건을갖는문제입니다。
선형목적함수fTx.여기서f는상수로구성된열벡터이고x는미지수로구성된열벡터입니다。
범위와선형제약조건。단,비선형제약조건은포함되지않음(정의는제약조건작성하기참조)
X의일부성분이정수값을가져야한다는제한
수학적측면에서벡터f,磅,乌兰巴托와행렬,Aeq,이에대응하는벡터b,说真的,그리고인덱스세트intcon
이주어질때,다음문제의해가되는벡터x를구합니다。
Intlinprog알고리즘
알고리즘개
intlinprog
는다음과같은기본전략을사용하여혼합정수선형계획법문제를풉니다。intlinprog
에의해어느단계에서든문제가풀릴수있습니다。어느한단계에서문제가해결되면intlinprog
는그이후의단계를실행하지않습니다。
선형계획전처리
혼합정수선형계획법정의에따르면다음과같이선형부등식과선형등식집합을표현하는행렬一와Aeq,그리고대응하는벡터b와beq가있습니다。
이러한선형제약조건은해x를제한합니다。
일반적으로,문제에포함되는변수의개수(x의성분개수)를줄이고선형제약조건의개수를줄일수있습니다。이렇게줄이는작업을수행하느라솔버에서시간이더걸릴수있지만,일반적으로해를구하는데소요되는전체시간이감소되므로더큰문제를풀수있게됩니다。알고리즘은해를수치적으로더정하게만들수있습니다。또한,이러한알고리즘은경우에따라실현불가능문제를감지하기도합니다。
전처리단계는중복된변수와제약조건을제거하고,모델의스케일링과제약조건행렬의희소성을향상시키고,변수의범위를강화하고,모델의원문제실현불가능성과쌍대문제실현불가능성을감지하는것을목표로합니다。
자세한내용은앤더슨(安德森)과앤더슨(安德森)의문헌[2]및미사로쉬(Mészáros)와셜(Suhl)의문헌[8]을참조하십시오。
선형계획법
완화된초기문제는혼합정수선형계획법정의와동일한목적함수와제약조건을갖지만,정수제약조건은갖지않는선형계획법문제입니다。xLP를완화된문제의해라고하고x를정수제약조건이있는원래문제의해라고합니다。간단히말해다음이성립됩니다。
fTxLP≤fTx,
그이유는xLP가더적은제한사항으로동일한함수를최소화하기때문입니다。
분기한정(和)알고리즘이실행되는동안이완화된초기LP(루트노드LP)와생성된모든LP완화는선형계획법풀이기법을사용하여풉니다。
혼합정수계획전처리
혼합정수계획의전처리과정에서intlinprog
는정수제한과함께선형부등식A*x≤b
를분석하여다음을결정합니다。
문제가실현불가능한지여부。
일부범위를좁힐수있는지여부。
일부부등식이중복되어있어,무시하거나제거할수있는지여부。
일부부등식을강화할수있는지여부。
일부정수변수를고정할수있는지여부。
IntegerPreprocess
옵션을사용하면intlinprog
가여러스텝을실행할지,스텝을전부실행할지,아니면스텝을거의실행하지않을지를선택할수있습니다。x0
수를포함시키는경우intlinprog
는전처리에이값을사용합니다。
혼합정수계획전처리의주목적은그다음에수행하는분기한정계산을단순화하는것입니다。전처리에는분기한정에서분석하게될수있는무의미한하위문제후보일부를빠르게미리검토하여제거하는작업이포함됩니다。
정수전처리에대한자세한내용은세이블스버그(Savelsbergh)의문헌[10]을참조하십시오。
절단 생성
절단은intlinprog
가문제에추가하는부가적선형부등식제약조건입니다。이부등식은해가정수에더가깝도록LP완화의실현가능한영역을제한하려고시도합니다。CutGeneration
옵션을사용하여intlinprog
가사용하는절단유형을제어할수있습니다。
“基本”
절단에는다음이포함됩니다。
혼합정수반올림절단
고모리절단(Gomory cut)
클릭절단(小团体剪)
커버절단(封面剪裁)
흐름커버절단(Flow Cover cut)
또한,문제가순수하게정수이면(모든변수가정수값을가짐)intlinprog
는다음절단도사용합니다。
강한슈바탈-고모리절단(强Chvatal-Gomory cut)
v2 -절반절단(零-半切)
“中间”
절단에는모든“基本”
절단과함께다음이포함됩니다。
단순한올리기및절단(简单的提升和项目切割)
단순한피벗및감소절단(简单的枢轴-还原切割)
감소및분할절단(还原-拆分切割)
“高级”
절단에는감소및분할절단을제외한모든“中间”
절단과함께다음이포함됩니다。
강한슈바탈-고모리절단(强Chvatal-Gomory cut)
v2 -절반절단(零-半切)
순수한정수문제의경우,“中间”
가가장많은절단유형을사용합니다。中间体는감소및분할절단을사용하지만“高级”
는이절단을사용하지않기때문입니다。
또다른옵션CutMaxIterations
는intlinprog
가절단을생성하기위해반복하는횟수에대한상한을지정합니다。
절단생성알고리즘(평면절단방법이라고도함)에대한자세한내용은코르누에졸스(Cornuejols)의문헌[5]를참조하고,클릭절단에대해서는아탐튀르크(Atamturk)넴하우저(Nemhauser)사벨스베르그(Savelsbergh)의문헌[3]을참조하십시오。
실현가능한해를구하는데활용할수있는발견법
목적함수에대한상한을구하기위해분기한정(和)절차에서는실현가능점을구해야합니다。분기한정중에구하는LP완화의해는실현가능한정수해일수있으며,이는원래MILP에향상된상한을제공할수있습니다。어떤기법에서는분기한정이전또는도중에실현가능점을더빠르게찾아냅니다。intlinprog
는루트노드에서분기한정반복중에이런기법을사용합니다。이러한기법은발견법입니다。즉,성공할수도있지만실패할수도있는알고리즘입니다。
발견법은솔버가초기해또는새로운실현가능한정수해를구하는데유용한시작발견법일수있습니다。또는정수실현가능점에서시작하여더나은정수실현가능점,즉더낮은목적함수값을갖는점을구하려는개선발견법일수도있습니다。intlinprog
개선발견법은“rin”
,“rss”
, 1-opt, 2-opt및유도급강하입니다。
“启发式”
옵션을사용하여intlinprog
발견법을설정하십시오。옵션은다음과같습니다。
옵션 | 설명 |
---|---|
“基本” (디폴트값) |
솔버가다양한파라미터를사용하여반올림발견법과급강하발견법을각각두번실행한다음, |
“中间” |
솔버가다양한파라미터를사용하여반올림발견법과급강하발견법을각각두번실행합니다。실현가능한정수해가있는경우솔버는 |
“高级” |
솔버가다양한파라미터를사용하여반올림발견법과급강하발견법을각각두번실행합니다。실현가능한정수해가있는경우솔버는 |
“rin” 또는이와동등한“rins-diving” |
|
“rss” 또는이와동등한“rss-diving” |
|
“圆” |
|
“round-diving” |
솔버는 |
“潜水” |
급강하발견법은일반적으로정수값을가져야하는하나의변수를선택합니다。이에대한현재해는소수입니다。그런다음이발견법에서는변수가정수값을갖도록강제하는범위를추가하고연관된완화된LP를다시풉니다。급강하발견법간의주차이점은범위에대한변수를선택하는방법에있습니다。베르톨드(贝特霍尔德)의문헌[4],섹션3.1을참조하십시오。 |
“没有” |
|
“中间”
와“高级”
의주차이점은“高级”
는분기한정반복중에더자주발견법을실행한다는점입니다。
위에나와있는발견법외에도,启发式
옵션이“基本”
,“中间”
또는“高级”
경우다음발견법이실행됩니다。
ZI轮-알고리즘이완화된LP를풀때마다실행되는발견법입니다。이발견법은다른제약조건에대한실현가능성에영향을주지않고소수인각정수변수를인접한정수로이동시키려고시도합니다。자세한내용은亨德尔[7]을참조하십시오。
1-opt——알고리즘이새로운실현가능한정수해를구할때마다실행되는발견법입니다。이발견법은다른제약조건에대한실현가능성에영향을주지않고각정수변수를거치면서해당변수를인접한정수로이동시켜려고시도하면서,목적함수값을낮춥니다。
2-opt——알고리즘이새로운실현가능한정수해를구할때마다실행되는발견법입니다。2-opt에서는동일한제약조건에향을주는정수변수쌍을전부찾습니다。이는 곧
一个
또는Aeq
제약조건행렬의같은행에0이아닌소가있다는뜻입니다。각쌍에대해2-opt는실현가능한정수해를취하고네가지의가능한모든이동(위——위위-아래,아래-위아래-아래)을사용하여변수쌍의값을위나아래로이동시켜,더나은목적함수값을가진실현가능한인접해를찾습니다。이알고리즘에서는제약조건을충족하고목적함수값도개선하는쌍에서각변수에대한이동의최대크기(동일한크기)를계산하여,각각의정수변수쌍을테스트합니다。
발견법단계의시작부분에서启发式
이“没有”
이아니거나사용자가x0
수에초기정수실현가능점을제공하지않으면intlinprog
는자명한발견법을실행합니다。자명한발견법은다음점에서실현가능성을확합니다。
모든점
상한
하한(0이아닌경우)
“锁”점
“锁”점은모든변수에유한상한과유한하한을갖는문제에대해서만정의됩니다。각변수의“锁定”점은상한또는하한이고,다음과같이선택됩니다。각 변수j
에대해선형제약조건행렬(:, j)
의대응되는양수항목의개수를센다음대응되는음수항목의개수를뺍니다。결과가양수이면해당변수에하한磅(j)
를사용하십시오。그렇지않으면해당변수에상한乌兰巴托(j)
를사용하십시오。“锁”점은각변수에대해최대개수의선형부등식제약조건을충족하려고시도하지만,반드시실현가능하지는않습니다。
각발견법이실현가능한해와함께완료되고나면intlinprog
가출력함수와플롯함수를호출합니다。intlinprog输出函数和图函数语法항목을참조하십시오。
x0
수를포함시킬경우intlinprog
는더나은정수실현가능점을구할때까지“rin”
와유도급강하발견법에서그값을사용합니다。따라서x0
을제공할경우“启发式”
옵션을“rins-diving”
으로설정하거나“rin”
를사용하는다른설정을사용하여좋은결과를얻을수있습니다。
분기한정(分支-绑定)
분기한정법은milp의해에수렴하려고시도하는일련의하위문제를생성합니다。하위문제는해fTx에대한일련의상한및하한을제공합니다。첫번째상한은임의의실현가능한해이고,첫번째하한은완화된문제의해입니다。상한에대한자세한내용은실현가능한해를구하는데활용할수있는발견법항목을참조하십시오。
선형계획법에설명된대로완화된선형계획법문제의해는MILP의해보다낮은목적함수값을가집니다。또한,임의의실현가능점x有限元分析는다음을충족합니다。
fTx有限元分析≥fTx,
그 이유는fTx가모든실현가능점중최솟값이기때문입니다。
이컨텍스트에서노드는원래문제와동일한목적함수,범위,선형제약조건을갖지만정수제약조건은갖지않으며선형제약조건또는범위에대한특정한변경사항이적용된LP입니다。루트 노드는정수제약조건이없고선형제약조건또는범위에대한변경사항이적용되지않은원래문제입니다。즉,루트노드는완화된초기lp입니다。
시작범위에서분기한정법은루트노드에서분기를생성함으로써새하위문제를생성합니다。분기생성단계는여러규칙중하나에따라발견법방식으로수행됩니다。각규칙은한변수가정수J보다작거나같도록제한하거나J + 1보다크거나같도록제한하여문제를분할하는아이디어를기반으로합니다。Intcon에지정된정수에대응하는xLP의소가정수가아닌경우이두하위문제가생성됩니다。여기서,xLP는완화된문제의해입니다。변수를내림(버림)한값을j로취하고올림(반올림)한값을j +1로취합니다。결과로생성되는두문제는fTxLP보다크거나같은해를가집니다。그이유는제한사항이더많기때문입니다。따라서,이절차는잠재적으로하한을높일수있습니다。
분기한정법의성능은분할할변수를선택하는규칙(분기규칙)에따라달라집니다。알고리즘은다음과같은규칙을사용하며,이러한규칙은BranchRule
옵션에서설정할수있습니다。
“maxpscost”
-최대의사 비용을갖는소수변수를선택합니다。“strongpscost”
- - - - - -“maxpscost”
와유사하지만,각변수에대해의사비용을1
로초기화하는대신의사비용이더신뢰할수있는추정값을가진후에만솔버가변수에대해분기를생성하려고시도합니다。더신뢰할수있는추정값을얻기위해솔버는다음을수행합니다(아흐터베르그(Achterberg)코흐(Koch),마틴(马丁)의문헌[1]참조)。현재의사비용기반점수를기준으로모든잠재적인분기변수(현재는소수이지만정수여야하는변수)의순서를지정합니다。
가장높은점수를갖는변수부터시작해,현재분기변수를기반으로하는두개의완화된선형계획을실행합니다(변수가분기계산에아직사용되지않은경우)。솔버는이두해를사용하여현재분기변수에대한의사비용을업데이트합니다。솔버는분기를선택하는데걸리는시간을절약하기위해이과정을조기에중단할수있습니다。
현재가장높은의사비용기반점수가연속된
k
개변수에대해변경되지않을때까지목록의변수를계속선택합니다。여기서k
는내부적으로선택되는값이며,일반적으로5에서10사이입니다。가장높은의사비용기반점수를갖는변수에서분기를생성합니다。솔버가앞서의사비용추정절차를실행하는동안이변수를기반으로하는완화된선형계획을이미계산했을수있습니다。
추가적선형계획해때문에
“strongpscost”
분기의각반복은디폴트“maxpscost”
보다시간이더걸립니다。하지만,분기한정반복횟수가대개감소하므로“strongpscost”
방법이전체적으로시간을절약할수있습니다。“可靠性”
- - - - - -“strongpscost”
와유사하지만,초기화되지않은의사비용분기에대해서만완화된선형계획을실행하는대신“可靠性”
는각변수에대해최대k2
회까지계획을실행합니다。여기서k2
는4또는8과같은작은정수입니다。따라서,“可靠性”
에서는훨씬더느리게분기가생성되지만,잠재적으로“strongpscost”
보다더적은횟수의분기한정반복을실행합니다。“mostfractional”
- - - - - -1/2
에가장가까운소수부를갖는변수를선택합니다。“maxfun”
-목적함수벡터f
에서대응하는최대절댓값을갖는변수를선택합니다。
알고리즘이분기를생성하고나면탐색할노드두개가새로생성됩니다。알고리즘은다음규칙중하나를사용하여,가능한모든노드중에서탐색할노드를선택합니다。
“minobj”
-가장낮은목적함수값을갖는노드를선택합니다。“mininfeas”
-정수실현불가능성의합이가장작은노드를선택합니다。이는노드에있는모든정수실현불가능성분x(i)에대해p我- - - - - -및p我+중더작은값을더한다는것을의미합니다。여기에는다음이성립합니다。p我- - - - - -= x(i) -⌊x(i)⌋
p我+= 1 - p我- - - - - -.“simplebestproj”
- - - - - -최적의을갖는노드를선택합니다。
intlinprog
는원래문제에서의정보(예:목적함수의최대공약수(GCD))를고려하여일부하위문제의분석을건너뜁니다。
분기한정절차는다음중지기준중하나가충족될때까지분석할하위문제를체계적으로생성하고목적함수의상한또는하한을향상시키지않는하위문제를삭제하는작업을계속수행합니다。
알고리즘이
MaxTime
옵션을초과합니다。목적함수의하한과상한사이의차이가
AbsoluteGapTolerance
허용오차또는RelativeGapTolerance
허용오차보다작습니다。탐색된노드개수가
MaxNodes
옵션을초과합니다。정수실현가능점개수가
MaxFeasiblePoints
옵션을초과합니다。
분기한정절차에대한자세한내용은넴하우저(Nemhauser)와울시(沃尔西)의문헌[9]및울시의문헌[11]을참조하십시오。
참고 문헌
[1]阿克特伯格,T.科赫和A.马丁。重新审视分支规则。《运筹学研究》,2005,pp. 42-54。可以在https://www-m9.ma.tum.de/downloads/felix-klein/20B/AchterbergKochMartin-BranchingRulesRevisited.pdf
.
[2]安徒生E. D.和安徒生K. D.线性规划的预解。《数学规划》71,pp. 221-245, 1995。
[3] Atamtürk, A., G. L. Nemhauser, M. W. P. Savelsbergh。求解整数规划问题中的冲突图。《运筹学》,2000,pp. 40-55。
[4] Berthold, T.混合整数程序的原始启发式。Technischen Universität柏林,2006年9月可以在https://www.zib.de/groetschel/students/Diplom-Berthold.pdf
.
[5] Cornuéjols, G.混合整数线性规划的有效不等式。数学规划B卷,第3-44页,2008。
[6] Danna, E. Rothberg, E. Le Pape, C.探索松弛诱导邻域以改善MIP解决方案。金宝搏官方网站数学规划,Vol 102,第1期,pp. 71-90, 2005。
混合整数规划的新舍入和传播启发式。学士学位论文Universität柏林,2011年。PDF可于https://opus4.kobv.de/opus4-zib/files/1332/bachelor_thesis_main.pdf.
[8] Mészáros C.,和Suhl, U. H.线性和二次规划的先进预处理技术。光谱学,25(4),pp. 575-595, 2003。
[9] Nemhauser, G. L.和Wolsey, L. A.整数和组合优化。Wiley-Interscience,纽约,1999年。
混合整数规划问题的预处理和探测技术。ORSA J.计算,Vol. 6, No. 4, pp. 445-454, 1994。
[11]沃尔西,洛杉矶整数编程。Wiley-Interscience,纽约,1998年。