{"id":5065,"date":"2024-01-05T09:33:31","date_gmt":"2024-01-05T09:33:31","guid":{"rendered":"https:\/\/nag.com\/?page_id=5065"},"modified":"2024-01-11T10:29:04","modified_gmt":"2024-01-11T10:29:04","slug":"mixed-integer-linear-programming","status":"publish","type":"page","link":"https:\/\/nag.com\/mixed-integer-linear-programming\/","title":{"rendered":"Mixed Integer Linear Programming (MILP) Solver"},"content":{"rendered":"\n<div class=\"gbc-title-banner ta ta-lg ta-xl\" style='background-color: #082d48ff; color: #ffffffff; border-radius: 0px; '>\n    <div class=\"container\" style='border-radius: 0px; '>\n        <div class=\"row justify-content--center\" style='color: #ffffffff;'>\n            <div class=\"col-12\"  >\n                <div class=\"wrap pv-4 \" style=\"0px\">\n                                <div class=\"col-12 col-md-12 col-lg-10 col-xl-8  banner-content\"  >\n    \n                                             <h1>Mixed Integer Linear Programming (MILP)<\/h1>\n                    \n                    <div class=\"mt-1 mb-1 content\"><\/div>\n\n                    \n                                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<!-- Spacer -->\n<div class=\"pt-4 pt-lg-4 pt-xl-4\" ><\/div>\n\n<div class=\"container content-area-default \">\n    <div class=\"row justify-content--center\">\n        <div class=\"col-12 col-md-12 col-lg-10 col-xl-8\">\n            <p class=\"indent\">At Mark 29.3, <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG introduces a cutting-edge solver (<a href=\"https:\/\/support.nag.com\/numeric\/nl\/nagdoc_latest\/clhtml\/h\/h02bkc.html\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\"><mtext>nag_mip_handle_solve_milp<\/mtext><\/math><\/a>) designed specifically for addressing large-scale mixed-integer linear programming (MILP) problems. This marks a significant stride in <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG\u2019s commitment to enhancing and broadening its offerings in the field of mathematical optimization.<\/p>\n<p class=\"indent\">MILP finds widespread application across diverse industries, including but not limited to finance, manufacturing, logistics, transportation, and telecommunications. By accommodating both continuous and discrete decision variables, the solver empowers organizations to model practical and challenging problems, including resource allocation, scheduling, and network flow.<\/p>\n<p class=\"indent\">Large-scale MILP problems of the form\u00a0<\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div align=\"center\"><\/p><table class='equation' style=\"width:45%\"><tr><td>\n<!-- l. 61 --><p class='indent'>\n<\/p><!-- l. 61 --><math class='equation' display='block' xmlns='http:\/\/www.w3.org\/1998\/Math\/MathML'><mrow>\n<mstyle class='label' id='x1-2r1'><\/mstyle><!-- endlabel --> <mtable align='axis' class='array' columnlines='none' displaystyle='true' equalcolumns='false' equalrows='false' style=''> <mtr class='array-row'><mtd class='array-td' columnalign='left'><munder><mrow><mstyle class='mbox'><mtext>minimize<\/mtext><\/mstyle><\/mrow><mrow><mi>x<\/mi> <mo class='MathClass-rel' stretchy='false'>\u2208<\/mo> <msup><mrow><mi>\u211d<\/mi><\/mrow><mrow><mi>n<\/mi><\/mrow><\/msup><\/mrow><\/munder><\/mtd><mtd class='array-td' columnalign='left'><msup><mrow><mi>c<\/mi><\/mrow><mrow><mi>T<\/mi><\/mrow><\/msup><mi>x<\/mi>            <\/mtd> <\/div>\n<\/mtr> <mtr class='array-vspace' style='font-size:5pt'><\/mtr> <mtr class='array-row'><mtd class='array-td' columnalign='left'><mstyle class='mbox'><mtext>subject to<\/mtext><\/mstyle>        <\/mtd><mtd class='array-td' columnalign='left'><msub><mrow><mi>l<\/mi><\/mrow><mrow><mi>A<\/mi><\/mrow><\/msub> <mo class='MathClass-rel' stretchy='false'>\u2264<\/mo> <mi mathvariant='italic'>Ax<\/mi> <mo class='MathClass-rel' stretchy='false'>\u2264<\/mo> <msub><mrow><mi>u<\/mi><\/mrow><mrow><mi>A<\/mi><\/mrow><\/msub><mo class='MathClass-punc' stretchy='false'>,<\/mo><\/mtd>\n<\/mtr> <mtr class='array-vspace' style='font-size:5pt'><\/mtr> <mtr class='array-row'><mtd class='array-td' columnalign='left'>                  <\/mtd><mtd class='array-td' columnalign='left'><msub><mrow><mi>l<\/mi><\/mrow><mrow><mi>x<\/mi><\/mrow><\/msub> <mo class='MathClass-rel' stretchy='false'>\u2264<\/mo> <mi>x<\/mi> <mo class='MathClass-rel' stretchy='false'>\u2264<\/mo> <msub><mrow><mi>u<\/mi><\/mrow><mrow><mi>x<\/mi><\/mrow><\/msub><mo class='MathClass-punc' stretchy='false'>,<\/mo>   <\/mtd>\n      <\/mtd><\/mtr><!-- ll --><\/mtable>\n<\/mrow><\/math><\/td><td class='eq-no' style=\"text-align:right\">(1)<\/td><\/tr><\/table>\n\n\n<div class=\"container content-area-default \">\n    <div class=\"row justify-content--center\">\n        <div class=\"col-12 col-md-12 col-lg-10 col-xl-8\">\n            <p style=\"text-align: center;\" align=\"left\"><mo>\\( x \\) <mo><mo>\u2208<\/mo><\/mo>\u00a0\\(P \\),<\/mo><\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n<div class=\"container content-area-default \">\n    <div class=\"row justify-content--center\">\n        <div class=\"col-12 col-md-12 col-lg-10 col-xl-8\">\n            <p style=\"text-align: left;\" align=\"left\">where \\( A \\in \\mathbb{R}^{m\\times n} \\)<mo>, \\(l_{A}, u_{A} \\) <mo>\u2208 \u211d\\(^m\\), \\( c \\), \\( l_{x} \\), \\(u_{x}\\) <mo><mo>\u2208 \u211d\\(^n\\)<\/mo><\/mo><\/mo>\u00a0 are the problem data, and \\( P = \\) \u2124\\(^{n_{int}}\\) \u00d7 \u00a0\u211d \\(^{n_{l}}\\) <span style=\"font-size: 1.6rem; letter-spacing: 0.03em;\">are quite ubiquitous in real-life applications. It\u2019s important to highlight that solving MILP problems poses a considerable challenge owing to their combinatorial nature, and in many practical scenarios, finding an exact solution within reasonable time may be very difficult. We are happy to present the latest addition to the <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Library and aim to help users to make decisions efficiently and accurately.<\/span><\/mo><\/p>\n<h3 id=\"milp-modelling-and-solving\" class=\"likesectionHead\" style=\"text-align: left;\">MILP Modelling and Solving<\/h3>\n<p class=\"noindent\" style=\"text-align: left;\">Model (1) covers many practical use cases. One of the distinctive features of MILP is its capability to model logical conditions such as implications or dichotomies.<\/p>\n<p class=\"indent\" style=\"text-align: left;\">Take fixed charge modelling as an example. Economic activities frequently involve both fixed and variable costs. In these cases, a fixed cost \\(c_{fix} \\) only occurs when variable \\( y \\) is positive. Given a variable cost \\(c_{var}\\), the total cost when \\( y \\) <math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\"><mrow><mo>&gt;<\/mo><mn>0<\/mn><\/mrow><\/math> is \\(c_{fix} \\) + \\(c_{var}y\\) and 0 otherwise. It\u2019s easy to observe that the cost function is nonlinear. By introducing binary variable \\(x\\) we can model it as the linear expression<\/p>\n<p style=\"text-align: left;\">\u00a0<\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Spacer -->\n<div class=\"pt-1 pt-lg-1 pt-xl-1\" ><\/div>\n\n\n<math display='block' xmlns='http:\/\/www.w3.org\/1998\/Math\/MathML'><mrow>\n                                     <msub><mrow><mi>c<\/mi><\/mrow><mrow><mi mathvariant='italic'>fix<\/mi><\/mrow><\/msub><mi>x<\/mi> <mo class='MathClass-bin' stretchy='false'>+<\/mo> <msub><mrow><mi>c<\/mi><\/mrow><mrow><mi mathvariant='italic'>var<\/mi><\/mrow><\/msub><mi>y<\/mi><mo class='MathClass-punc' stretchy='false'>,<\/mo>\n<\/mrow><\/math>\n\n\n<!-- Spacer -->\n<div class=\"pt-2 pt-lg-2 pt-xl-2\" ><\/div>\n\n<div class=\"container content-area-default \">\n    <div class=\"row justify-content--center\">\n        <div class=\"col-12 col-md-12 col-lg-10 col-xl-8\">\n            <p style=\"text-align: left;\">Where we add constraints<math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\"><mrow><\/mrow><\/math><\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Spacer -->\n<div class=\"pt-2 pt-lg-2 pt-xl-2\" ><\/div>\n\n\n<math class='equation' display='block' xmlns='http:\/\/www.w3.org\/1998\/Math\/MathML'><mrow>\n <mtable align='axis' class='array' displaystyle='true' equalcolumns='false' equalrows='false' style=''> <mtr class='array-row'><mtd class='array-td' columnalign='left'><mn>0<\/mn> <mo class='MathClass-rel' stretchy='false'>\u2264<\/mo> <mi>y<\/mi> <mo class='MathClass-rel' stretchy='false'>\u2264<\/mo> <mi mathvariant='italic'>Mx<\/mi><mo class='MathClass-punc' stretchy='false'>,<\/mo><\/mtd>\n<\/mtr> <mtr class='array-vspace' style='font-size:2.58334pt'><\/mtr> <mtr class='array-row'><mtd class='array-td' columnalign='left'><mi>x<\/mi> <mo class='MathClass-rel' stretchy='false'>\u2208<\/mo><mo class='MathClass-open' stretchy='false'>{<\/mo><mn>0<\/mn><mo class='MathClass-punc' stretchy='false'>,<\/mo><mn>1<\/mn><mo class='MathClass-close' stretchy='false'>}<\/mo><mo class='MathClass-punc' stretchy='false'>,<\/mo>   <\/mtd><\/mtr><!-- l --><\/mtable>\n<\/mrow><\/math><\/td><\/tr><\/table>\n\n\n<!-- Spacer -->\n<div class=\"pt-2 pt-lg-2 pt-xl-2\" ><\/div>\n\n<div class=\"container content-area-default \">\n    <div class=\"row justify-content--center\">\n        <div class=\"col-12 col-md-12 col-lg-10 col-xl-8\">\n            <p style=\"text-align: left;\">Where \\(M \\) is an upper bound of \\(y\\) and should be chosen as the tightest known bound, instead of an arbitrarily large \\(M \\). This modelling technique appears in applications such as facility location and network design.<\/p>\n<p style=\"text-align: left;\">Another great usage of MILP is to model disjunctions. For example, when scheduling jobs on a machine, we might want to allow job \\(i\\) to be scheduled before job \\(j\\) or vice versa. Let \\(p_{i} \\) and \\(p_{j} \\) denote the processing time of job \\(i\\) and \\(j\\), while \\(t_{i}\\) and \\(t_{j}\\) represent their starting times. Then we will require at least one of the following constraints is satisfied.<\/p>\n<p class=\"noindent\" style=\"text-align: left;\">\u00a0<\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<math class='equation' display='block' xmlns='http:\/\/www.w3.org\/1998\/Math\/MathML'><mrow>\n <mtable align='axis' class='array' displaystyle='true' equalcolumns='false' equalrows='false' style=''> <mtr class='array-row'><mtd class='array-td' columnalign='left'><msub><mrow><mi>t<\/mi><\/mrow><mrow><mi>j<\/mi><\/mrow><\/msub> <mo class='MathClass-rel' stretchy='false'>\u2265<\/mo> <msub><mrow><mi>t<\/mi><\/mrow><mrow><mi>i<\/mi><\/mrow><\/msub> <mo class='MathClass-bin' stretchy='false'>+<\/mo> <msub><mrow><mi>p<\/mi><\/mrow><mrow><mi>i<\/mi><\/mrow><\/msub><mo class='MathClass-punc' stretchy='false'>,<\/mo><\/mtd>\n<\/mtr> <mtr class='array-vspace' style='font-size:2.58334pt'><\/mtr> <mtr class='array-row'><mtd class='array-td' columnalign='left'><msub><mrow><mi>t<\/mi><\/mrow><mrow><mi>i<\/mi><\/mrow><\/msub> <mo class='MathClass-rel' stretchy='false'>\u2265<\/mo> <msub><mrow><mi>t<\/mi><\/mrow><mrow><mi>j<\/mi><\/mrow><\/msub> <mo class='MathClass-bin' stretchy='false'>+<\/mo> <msub><mrow><mi>p<\/mi><\/mrow><mrow><mi>j<\/mi><\/mrow><\/msub><mo class='MathClass-punc' stretchy='false'>,<\/mo><\/mtd><\/mtr><!-- l --><\/mtable>\n<\/mrow><\/math><\/td><\/tr><\/table>\n\n\n<!-- Spacer -->\n<div class=\"pt-2 pt-lg-2 pt-xl-2\" ><\/div>\n\n<div class=\"container content-area-default \">\n    <div class=\"row justify-content--center\">\n        <div class=\"col-12 col-md-12 col-lg-10 col-xl-8\">\n            <p style=\"text-align: left;\">By introducing binary variables \\(x_{1} \\) and \\(x_{2} \\), the problem can be modelled as<math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\"><msub><mrow><\/mrow><\/msub><\/math><\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Spacer -->\n<div class=\"pt-2 pt-lg-2 pt-xl-2\" ><\/div>\n\n\n<math class='equation' display='block' xmlns='http:\/\/www.w3.org\/1998\/Math\/MathML'><mrow>\n <mtable align='axis' class='array' displaystyle='true' equalcolumns='false' equalrows='false' style=''> <mtr class='array-row'><mtd class='array-td' columnalign='left'><msub><mrow><mi>x<\/mi><\/mrow><mrow><mn>1<\/mn><\/mrow><\/msub> <mo class='MathClass-bin' stretchy='false'>+<\/mo> <msub><mrow><mi>x<\/mi><\/mrow><mrow><mn>2<\/mn><\/mrow><\/msub> <mo class='MathClass-rel' stretchy='false'>\u2265<\/mo> <mn>1<\/mn><mo class='MathClass-punc' stretchy='false'>,<\/mo>              <\/mtd>\n<\/mtr> <mtr class='array-vspace' style='font-size:2.58334pt'><\/mtr> <mtr class='array-row'><mtd class='array-td' columnalign='left'><msub><mrow><mi>x<\/mi><\/mrow><mrow><mn>1<\/mn><\/mrow><\/msub><mo class='MathClass-punc' stretchy='false'>,<\/mo><mi> <\/mi><msub><mrow><mi>x<\/mi><\/mrow><mrow><mn>2<\/mn><\/mrow><\/msub> <mo class='MathClass-rel' stretchy='false'>\u2208<\/mo><mo class='MathClass-open' stretchy='false'>{<\/mo><mn>0<\/mn><mo class='MathClass-punc' stretchy='false'>,<\/mo><mn>1<\/mn><mo class='MathClass-close' stretchy='false'>}<\/mo><mo class='MathClass-punc' stretchy='false'>,<\/mo>          <\/mtd>\n<\/mtr> <mtr class='array-vspace' style='font-size:2.58334pt'><\/mtr> <mtr class='array-row'><mtd class='array-td' columnalign='left'><msub><mrow><mi>t<\/mi><\/mrow><mrow><mi>j<\/mi><\/mrow><\/msub> <mo class='MathClass-rel' stretchy='false'>\u2265<\/mo> <msub><mrow><mi>t<\/mi><\/mrow><mrow><mi>i<\/mi><\/mrow><\/msub> <mo class='MathClass-bin' stretchy='false'>+<\/mo> <msub><mrow><mi>p<\/mi><\/mrow><mrow><mi>i<\/mi><\/mrow><\/msub> <mo class='MathClass-bin' stretchy='false'>\u2212<\/mo> <mi>M<\/mi><mo class='MathClass-open' stretchy='false'>(<\/mo><mn>1<\/mn> <mo class='MathClass-bin' stretchy='false'>\u2212<\/mo> <msub><mrow><mi>x<\/mi><\/mrow><mrow><mn>1<\/mn><\/mrow><\/msub><mo class='MathClass-close' stretchy='false'>)<\/mo><mo class='MathClass-punc' stretchy='false'>,<\/mo><\/mtd>\n<\/mtr> <mtr class='array-vspace' style='font-size:2.58334pt'><\/mtr> <mtr class='array-row'><mtd class='array-td' columnalign='left'><msub><mrow><mi>t<\/mi><\/mrow><mrow><mi>i<\/mi><\/mrow><\/msub> <mo class='MathClass-rel' stretchy='false'>\u2265<\/mo> <msub><mrow><mi>t<\/mi><\/mrow><mrow><mi>j<\/mi><\/mrow><\/msub> <mo class='MathClass-bin' stretchy='false'>+<\/mo> <msub><mrow><mi>p<\/mi><\/mrow><mrow><mi>j<\/mi><\/mrow><\/msub> <mo class='MathClass-bin' stretchy='false'>\u2212<\/mo> <mi>M<\/mi><mo class='MathClass-open' stretchy='false'>(<\/mo><mn>1<\/mn> <mo class='MathClass-bin' stretchy='false'>\u2212<\/mo> <msub><mrow><mi>x<\/mi><\/mrow><mrow><mn>2<\/mn><\/mrow><\/msub><mo class='MathClass-close' stretchy='false'>)<\/mo><mo class='MathClass-punc' stretchy='false'>,<\/mo><\/mtd><\/mtr><!-- l --><\/mtable>\n<\/mrow><\/math><\/td><\/tr><\/table>\n\n\n<!-- Spacer -->\n<div class=\"pt-2 pt-lg-2 pt-xl-2\" ><\/div>\n\n<div class=\"container content-area-default \">\n    <div class=\"row justify-content--center\">\n        <div class=\"col-12 col-md-12 col-lg-10 col-xl-8\">\n            <p style=\"text-align: left;\">where \\( M \\) <span style=\"font-size: 1.6rem; letter-spacing: 0.03em;\">again is positive and serves as a known bound.<\/span><\/p>\n<p class=\"indent\" style=\"text-align: left;\">There are many other types of constraints that are very useful in the field of operations research, including but not limited to<\/p>\n<ul style=\"text-align: left;\">\n<li>Semi-continuous variables where a variable \\(x\\) is either 0 or in an interval [\\( a, b\\)],<\/li>\n<li>variables only taking values from a set, e.g., \\(x\\)<math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\"><mrow><mi><br \/><\/mi><mo>\u2208<\/mo><mo>{<\/mo><mo>\u2212<\/mo><mn>2<\/mn><mo>,<\/mo><mo>\u2212<\/mo><mn>1<\/mn><mo>,<\/mo><mn>1<\/mn><mo>,<\/mo><mn>2<\/mn><mo>}<\/mo><\/mrow><\/math>,<\/li>\n<li>continuous piece-wise linear functions, which can be seen as a combination of linear functions.<mo><\/mo><\/li>\n<\/ul>\n<p style=\"text-align: left;\">See\u00a0<span class=\"cite\">[1,\u00a02]<\/span>\u00a0for more formulation techniques and its usage in scheduling.<\/p>\n<p style=\"text-align: left;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-5070\" src=\"https:\/\/nag.com\/wp-content\/uploads\/2024\/01\/milp_mini_article-300x226.jpg\" alt=\"\" width=\"300\" height=\"226\" \/><\/p>\n<p class=\"para-sm\" style=\"text-align: left;\"><span class=\"id\">Figure\u00a01:\u00a0<\/span><span class=\"content\">Illustration of a branch-and-bound tree<\/span><\/p>\n<p style=\"text-align: left;\">\u00a0<\/p>\n<p class=\"indent\" style=\"text-align: left;\">In order to solve (1) efficiently, the branch-and-bound algorithm serves as a fundamental framework, which is equipped with modern MILP techniques such as preprocessing, cut generation and various heuristics. A portion of a branch-and-bound tree is depicted in Figure\u00a01. Starting from the original problem, noted as root node, the algorithm generates various child nodes by shaping the feasible region via adding more constraints, such as Gomory fractional cut. Each node is solved as a continuous linear programming by an efficient dual simplex method. Various heuristics are adopted to get a better lower bound. By successfully pruning the search tree and selecting the search nodes, it greatly increases the chance for a branch-and-bound algorithm to find the optimal solution in a reasonable time. See\u00a0<span class=\"cite\">[3]<\/span>\u00a0for more details on algorithms to solve MILP.<\/p>\n<p class=\"indent\" style=\"text-align: left;\">The MILP solver\u00a0<a href=\"https:\/\/support.nag.com\/numeric\/nl\/nagdoc_latest\/clhtml\/h\/h02bkc.html\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\"><mtext>nag_mip_handle_solve_milp<\/mtext><\/math><\/a>\u00a0is fully integrated into the\u00a0<a href=\"https:\/\/nag.com\/mathematical-optimization\/\"><span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Optimization Modelling Suite<\/a>, which allows users to better express the real-world problems into the mathematical model, enhancing the understanding of the inner working of the model. During the modelling process, the users can<\/p>\n<ul class=\"itemize1\" style=\"text-align: left;\">\n<li class=\"itemize\">see the effect of a particular constraint or variable by temporarily removing them and then bringing them back;<\/li>\n<li class=\"itemize\">modify individual coefficients of the linear objective or the linear constraints;<\/li>\n<li class=\"itemize\">fix a variable to a given constant which results in the elimination of the variable across the formulation and decreasing the problem dimension.<\/li>\n<\/ul>\n<p class=\"noindent\" style=\"text-align: left;\">The solver is available for multiple languages and environments including C and C++, Python, Java, .NET and Fortran, on Windows, Linux and MacOS. See the\u00a0<a href=\"https:\/\/support.nag.com\/content\/getting-started-nag-library\">Getting Started<\/a>\u00a0page for how to download and install.<\/p>\n<p style=\"text-align: left;\">\u00a0<\/p>\n<p style=\"text-align: left;\">\u00a0<\/p>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Spacer -->\n<div class=\"pt-2 pt-lg-2 pt-xl-2\" ><\/div>\n\n\n<div class=\"gbc-title-banner ta ta-lg ta-xl\" style='background-color: #082d48ff; color: #ffffffff; border-radius: 0px; '>\n    <div class=\"container\" style='border-radius: 0px; '>\n        <div class=\"row justify-content--center\" style='color: #ffffffff;'>\n            <div class=\"col-12\"  >\n                <div class=\"wrap pv-4 \" style=\"0px\">\n                                <div class=\"col-12 col-md-12 col-lg-10 col-xl-8  banner-content\"  >\n    \n                                             <h3 class=\"field field--name-field-paragraph-title field--type-string field--label-hidden field--item\" style=\"text-align: left;\">References<\/h3>\n<p style=\"text-align: left;\">\u00a0<\/p>\n<div class=\"field field--name-field-paragraph-text field--type-text-long field--label-hidden field--item\">\n<p class=\"bibitem\" style=\"text-align: left;\"><span class=\"biblabel\">[1]<span class=\"bibsp\">\u00a0\u00a0\u00a0<\/span><\/span>Vielma JP. Mixed integer linear programming formulation techniques. Siam Review. 2015;57(1):3-57.<\/p>\n<p class=\"bibitem\" style=\"text-align: left;\"><span class=\"biblabel\">[2]<span class=\"bibsp\">\u00a0\u00a0\u00a0<\/span><\/span>Floudas CA, Lin X. Mixed integer linear programming in process scheduling: Modeling, algorithms, and applications. Annals of Operations Research. 2005 Oct;139:131-62.<\/p>\n<p class=\"bibitem\" style=\"text-align: left;\"><span class=\"biblabel\">[3]<span class=\"bibsp\">\u00a0\u00a0\u00a0<\/span><\/span>Conforti M, Cornu\u00e9jols G, Zambelli G, Conforti M, Cornu\u00e9jols G, Zambelli G. Integer programming models. Springer International Publishing; 2014.<\/p>\n<\/div>\n                    \n                    <div class=\"mt-1 mb-1 content\"><\/div>\n\n                    \n                                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The MILP solver is fully integrated into the <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG Optimization Modelling Suite, which allows users to better express the real-world problems into the mathematical model, enhancing the understanding of the inner working of the model.<\/p>\n","protected":false},"author":3,"featured_media":4531,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","footnotes":""},"class_list":["post-5065","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mixed Integer Linear Programming (MILP) Solver - nAG<\/title>\n<meta name=\"description\" content=\"The MILP solver is fully integrated into the NAG Optimization Modelling Suite, which allows users to better express the real-world problems into the mathematical model, enhancing the understanding of the inner working of the model.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nag.com\/mixed-integer-linear-programming\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mixed Integer Linear Programming (MILP) Solver - nAG\" \/>\n<meta property=\"og:description\" content=\"The MILP solver is fully integrated into the NAG Optimization Modelling Suite, which allows users to better express the real-world problems into the mathematical model, enhancing the understanding of the inner working of the model.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nag.com\/mixed-integer-linear-programming\/\" \/>\n<meta property=\"og:site_name\" content=\"nAG\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-11T10:29:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/android-chrome-192x192-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"192\" \/>\n\t<meta property=\"og:image:height\" content=\"192\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@NAGTalk\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nag.com\/mixed-integer-linear-programming\/\",\"url\":\"https:\/\/nag.com\/mixed-integer-linear-programming\/\",\"name\":\"Mixed Integer Linear Programming (MILP) Solver - nAG\",\"isPartOf\":{\"@id\":\"https:\/\/nag.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/nag.com\/mixed-integer-linear-programming\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/nag.com\/mixed-integer-linear-programming\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/android-chrome-192x192-1.png\",\"datePublished\":\"2024-01-05T09:33:31+00:00\",\"dateModified\":\"2024-01-11T10:29:04+00:00\",\"description\":\"The MILP solver is fully integrated into the NAG Optimization Modelling Suite, which allows users to better express the real-world problems into the mathematical model, enhancing the understanding of the inner working of the model.\",\"breadcrumb\":{\"@id\":\"https:\/\/nag.com\/mixed-integer-linear-programming\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nag.com\/mixed-integer-linear-programming\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nag.com\/mixed-integer-linear-programming\/#primaryimage\",\"url\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/android-chrome-192x192-1.png\",\"contentUrl\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/android-chrome-192x192-1.png\",\"width\":192,\"height\":192},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nag.com\/mixed-integer-linear-programming\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/nag.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mixed Integer Linear Programming (MILP) Solver\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/nag.com\/#website\",\"url\":\"https:\/\/nag.com\/\",\"name\":\"NAG\",\"description\":\"Robust, trusted numerical software and computational expertise.\",\"publisher\":{\"@id\":\"https:\/\/nag.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/nag.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/nag.com\/#organization\",\"name\":\"Numerical Algorithms Group\",\"alternateName\":\"NAG\",\"url\":\"https:\/\/nag.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nag.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png\",\"contentUrl\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png\",\"width\":1244,\"height\":397,\"caption\":\"Numerical Algorithms Group\"},\"image\":{\"@id\":\"https:\/\/nag.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/NAGTalk\",\"https:\/\/www.linkedin.com\/company\/nag\/\",\"https:\/\/www.youtube.com\/user\/NumericalAlgorithms\",\"https:\/\/github.com\/numericalalgorithmsgroup\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mixed Integer Linear Programming (MILP) Solver - nAG","description":"The MILP solver is fully integrated into the NAG Optimization Modelling Suite, which allows users to better express the real-world problems into the mathematical model, enhancing the understanding of the inner working of the model.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nag.com\/mixed-integer-linear-programming\/","og_locale":"en_US","og_type":"article","og_title":"Mixed Integer Linear Programming (MILP) Solver - nAG","og_description":"The MILP solver is fully integrated into the NAG Optimization Modelling Suite, which allows users to better express the real-world problems into the mathematical model, enhancing the understanding of the inner working of the model.","og_url":"https:\/\/nag.com\/mixed-integer-linear-programming\/","og_site_name":"nAG","article_modified_time":"2024-01-11T10:29:04+00:00","og_image":[{"width":192,"height":192,"url":"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/android-chrome-192x192-1.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@NAGTalk","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/nag.com\/mixed-integer-linear-programming\/","url":"https:\/\/nag.com\/mixed-integer-linear-programming\/","name":"Mixed Integer Linear Programming (MILP) Solver - nAG","isPartOf":{"@id":"https:\/\/nag.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nag.com\/mixed-integer-linear-programming\/#primaryimage"},"image":{"@id":"https:\/\/nag.com\/mixed-integer-linear-programming\/#primaryimage"},"thumbnailUrl":"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/android-chrome-192x192-1.png","datePublished":"2024-01-05T09:33:31+00:00","dateModified":"2024-01-11T10:29:04+00:00","description":"The MILP solver is fully integrated into the NAG Optimization Modelling Suite, which allows users to better express the real-world problems into the mathematical model, enhancing the understanding of the inner working of the model.","breadcrumb":{"@id":"https:\/\/nag.com\/mixed-integer-linear-programming\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nag.com\/mixed-integer-linear-programming\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nag.com\/mixed-integer-linear-programming\/#primaryimage","url":"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/android-chrome-192x192-1.png","contentUrl":"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/android-chrome-192x192-1.png","width":192,"height":192},{"@type":"BreadcrumbList","@id":"https:\/\/nag.com\/mixed-integer-linear-programming\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nag.com\/"},{"@type":"ListItem","position":2,"name":"Mixed Integer Linear Programming (MILP) Solver"}]},{"@type":"WebSite","@id":"https:\/\/nag.com\/#website","url":"https:\/\/nag.com\/","name":"NAG","description":"Robust, trusted numerical software and computational expertise.","publisher":{"@id":"https:\/\/nag.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nag.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nag.com\/#organization","name":"Numerical Algorithms Group","alternateName":"NAG","url":"https:\/\/nag.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nag.com\/#\/schema\/logo\/image\/","url":"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png","contentUrl":"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png","width":1244,"height":397,"caption":"Numerical Algorithms Group"},"image":{"@id":"https:\/\/nag.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/NAGTalk","https:\/\/www.linkedin.com\/company\/nag\/","https:\/\/www.youtube.com\/user\/NumericalAlgorithms","https:\/\/github.com\/numericalalgorithmsgroup"]}]}},"_links":{"self":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/pages\/5065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/comments?post=5065"}],"version-history":[{"count":85,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/pages\/5065\/revisions"}],"predecessor-version":[{"id":5688,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/pages\/5065\/revisions\/5688"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/media\/4531"}],"wp:attachment":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/media?parent=5065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}