From e7de78b9d96e99c103176a9723c7946b6ae90506 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 27 May 2024 14:12:41 +0000 Subject: [PATCH] Update documentation --- CaseStudies/a_blending_problem.html | 2 +- CaseStudies/a_set_partitioning_problem.html | 2 +- CaseStudies/a_sudoku_problem.html | 2 +- CaseStudies/a_transportation_problem.html | 2 +- ...two_stage_production_planning_problem.html | 2 +- CaseStudies/index.html | 3 +- _static/basic.css | 2 +- _static/doctools.js | 2 +- _static/language_data.js | 4 +- _static/searchtools.js | 165 +++++++++++------- develop/add_solver.html | 2 +- develop/contribute.html | 2 +- develop/index.html | 2 +- genindex.html | 2 +- guides/how_to_configure_solvers.html | 2 +- guides/how_to_debug.html | 2 +- guides/how_to_elastic_constraints.html | 2 +- guides/how_to_export_models.html | 2 +- guides/how_to_mip_start.html | 2 +- guides/index.html | 3 +- index.html | 3 +- main/amply.html | 2 +- main/basic_python_coding.html | 2 +- main/includeme.html | 2 +- main/index.html | 3 +- main/installing_pulp_at_home.html | 2 +- main/optimisation_concepts.html | 2 +- main/the_optimisation_process.html | 2 +- plugins/amply.html | 2 +- plugins/index.html | 2 +- plugins/lparray.html | 2 +- plugins/orloge.html | 2 +- plugins/pytups.html | 2 +- py-modindex.html | 2 +- search.html | 2 +- searchindex.js | 2 +- technical/constants.html | 2 +- technical/index.html | 3 +- technical/pulp.html | 4 +- technical/solvers.html | 46 ++--- 40 files changed, 173 insertions(+), 123 deletions(-) diff --git a/CaseStudies/a_blending_problem.html b/CaseStudies/a_blending_problem.html index 3097b438..b5c8e3d7 100644 --- a/CaseStudies/a_blending_problem.html +++ b/CaseStudies/a_blending_problem.html @@ -16,7 +16,7 @@ - + diff --git a/CaseStudies/a_set_partitioning_problem.html b/CaseStudies/a_set_partitioning_problem.html index 4a79ce20..1fa8ba7a 100644 --- a/CaseStudies/a_set_partitioning_problem.html +++ b/CaseStudies/a_set_partitioning_problem.html @@ -16,7 +16,7 @@ - + diff --git a/CaseStudies/a_sudoku_problem.html b/CaseStudies/a_sudoku_problem.html index 6f9de450..e5dd0fe6 100644 --- a/CaseStudies/a_sudoku_problem.html +++ b/CaseStudies/a_sudoku_problem.html @@ -16,7 +16,7 @@ - + diff --git a/CaseStudies/a_transportation_problem.html b/CaseStudies/a_transportation_problem.html index 4f3e4f24..252e2e2c 100644 --- a/CaseStudies/a_transportation_problem.html +++ b/CaseStudies/a_transportation_problem.html @@ -16,7 +16,7 @@ - + diff --git a/CaseStudies/a_two_stage_production_planning_problem.html b/CaseStudies/a_two_stage_production_planning_problem.html index 18d9ccba..53ad95b2 100644 --- a/CaseStudies/a_two_stage_production_planning_problem.html +++ b/CaseStudies/a_two_stage_production_planning_problem.html @@ -16,7 +16,7 @@ - + diff --git a/CaseStudies/index.html b/CaseStudies/index.html index 1564465a..e61539bb 100644 --- a/CaseStudies/index.html +++ b/CaseStudies/index.html @@ -16,8 +16,9 @@ - + + diff --git a/_static/basic.css b/_static/basic.css index 30fee9d0..f316efcb 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/_static/doctools.js b/_static/doctools.js index d06a71d7..4d67807d 100644 --- a/_static/doctools.js +++ b/_static/doctools.js @@ -4,7 +4,7 @@ * * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/_static/language_data.js b/_static/language_data.js index 250f5665..367b8ed8 100644 --- a/_static/language_data.js +++ b/_static/language_data.js @@ -5,7 +5,7 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -13,7 +13,7 @@ var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; -/* Non-minified version is copied as a separate JS file, is available */ +/* Non-minified version is copied as a separate JS file, if available */ /** * Porter Stemmer diff --git a/_static/searchtools.js b/_static/searchtools.js index 7918c3fa..92da3f8b 100644 --- a/_static/searchtools.js +++ b/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -99,7 +99,7 @@ const _displayItem = (item, searchTerms, highlightTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms) + Search.makeSearchSummary(data, searchTerms, anchor) ); // highlight search terms in the summary if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js @@ -116,8 +116,8 @@ const _finishSearch = (resultCount) => { ); else Search.status.innerText = _( - `Search finished, found ${resultCount} page(s) matching the search query.` - ); + "Search finished, found ${resultCount} page(s) matching the search query." + ).replace('${resultCount}', resultCount); }; const _displayNextItem = ( results, @@ -137,6 +137,22 @@ const _displayNextItem = ( // search finished, update title and status message else _finishSearch(resultCount); }; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; /** * Default splitQuery function. Can be overridden in ``sphinx.search`` with a @@ -160,13 +176,26 @@ const Search = { _queued_query: null, _pulse_status: -1, - htmlToText: (htmlString) => { + htmlToText: (htmlString, anchor) => { const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + for (const removalQuery of [".headerlinks", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent !== undefined) return docContent.textContent; + if (docContent) return docContent.textContent; + console.warn( - "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." ); return ""; }, @@ -239,16 +268,7 @@ const Search = { else Search.deferQuery(query); }, - /** - * execute search (requires search index to be loaded) - */ - query: (query) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - const indexEntries = Search._index.indexentries; - + _parseQuery: (query) => { // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -284,16 +304,32 @@ const Search = { // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); - // array of [docname, title, anchor, descr, score, filename] - let results = []; + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename]. + const normalResults = []; + const nonMainIndexResults = []; + _removeChildren(document.getElementById("search-progress")); - const queryLower = query.toLowerCase(); + const queryLower = query.toLowerCase().trim(); for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { for (const [file, id] of foundTitles) { let score = Math.round(100 * queryLower.length / title.length) - results.push([ + normalResults.push([ docNames[file], titles[file] !== title ? `${titles[file]} > ${title}` : title, id !== null ? "#" + id : "", @@ -308,46 +344,47 @@ const Search = { // search for explicit entries in index directives for (const [entry, foundEntries] of Object.entries(indexEntries)) { if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id] of foundEntries) { - let score = Math.round(100 * queryLower.length / entry.length) - results.push([ + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ docNames[file], titles[file], id ? "#" + id : "", null, score, filenames[file], - ]); + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } } } } // lookup as object objectTerms.forEach((term) => - results.push(...Search.performObjectSearch(term, objectTerms)) + normalResults.push(...Search.performObjectSearch(term, objectTerms)) ); // lookup as search terms in fulltext - results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); // let the scorer override scores with a custom scoring function - if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); - - // now sort the results by score (in opposite order of appearance, since the - // display function below uses pop() to retrieve items) and then - // alphabetically - results.sort((a, b) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; - }); + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; // remove duplicate search results // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept @@ -361,7 +398,12 @@ const Search = { return acc; }, []); - results = results.reverse(); + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); // for debugging //Search.lastresults = results.slice(); // a copy @@ -466,14 +508,18 @@ const Search = { // add support for partial matches if (word.length > 2) { const escapedWord = _escapeRegExp(word); - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord) && !terms[word]) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord) && !titleTerms[word]) - arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); - }); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } } // no match but word was a required one @@ -496,9 +542,8 @@ const Search = { // create the mapping files.forEach((file) => { - if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) - fileMap.get(file).push(word); - else fileMap.set(file, [word]); + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); }); }); @@ -549,8 +594,8 @@ const Search = { * search summary for a given text. keywords is a list * of stemmed words. */ - makeSearchSummary: (htmlText, keywords) => { - const text = Search.htmlToText(htmlText); + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); if (text === "") return null; const textLower = text.toLowerCase(); diff --git a/develop/add_solver.html b/develop/add_solver.html index abceeca5..8823dd25 100644 --- a/develop/add_solver.html +++ b/develop/add_solver.html @@ -16,7 +16,7 @@ - + diff --git a/develop/contribute.html b/develop/contribute.html index e3e75218..fea9e02c 100644 --- a/develop/contribute.html +++ b/develop/contribute.html @@ -16,7 +16,7 @@ - + diff --git a/develop/index.html b/develop/index.html index e8581232..61e13408 100644 --- a/develop/index.html +++ b/develop/index.html @@ -16,7 +16,7 @@ - + diff --git a/genindex.html b/genindex.html index 1c7fe616..3d1671a7 100644 --- a/genindex.html +++ b/genindex.html @@ -15,7 +15,7 @@ - + diff --git a/guides/how_to_configure_solvers.html b/guides/how_to_configure_solvers.html index c8c32dc9..cb0ad877 100644 --- a/guides/how_to_configure_solvers.html +++ b/guides/how_to_configure_solvers.html @@ -16,7 +16,7 @@ - + diff --git a/guides/how_to_debug.html b/guides/how_to_debug.html index e1ca2429..53eda161 100644 --- a/guides/how_to_debug.html +++ b/guides/how_to_debug.html @@ -16,7 +16,7 @@ - + diff --git a/guides/how_to_elastic_constraints.html b/guides/how_to_elastic_constraints.html index 56689e08..4900ff1f 100644 --- a/guides/how_to_elastic_constraints.html +++ b/guides/how_to_elastic_constraints.html @@ -16,7 +16,7 @@ - + diff --git a/guides/how_to_export_models.html b/guides/how_to_export_models.html index fdcc4b95..2bcb8ea1 100644 --- a/guides/how_to_export_models.html +++ b/guides/how_to_export_models.html @@ -16,7 +16,7 @@ - + diff --git a/guides/how_to_mip_start.html b/guides/how_to_mip_start.html index 5135d89f..c3097531 100644 --- a/guides/how_to_mip_start.html +++ b/guides/how_to_mip_start.html @@ -16,7 +16,7 @@ - + diff --git a/guides/index.html b/guides/index.html index 87e18140..915f3169 100644 --- a/guides/index.html +++ b/guides/index.html @@ -16,8 +16,9 @@ - + + diff --git a/index.html b/index.html index e4b5a121..74c5bedd 100644 --- a/index.html +++ b/index.html @@ -16,8 +16,9 @@ - + + diff --git a/main/amply.html b/main/amply.html index 547a19e7..76925001 100644 --- a/main/amply.html +++ b/main/amply.html @@ -16,7 +16,7 @@ - + diff --git a/main/basic_python_coding.html b/main/basic_python_coding.html index 77c03c9d..767bf5e9 100644 --- a/main/basic_python_coding.html +++ b/main/basic_python_coding.html @@ -16,7 +16,7 @@ - + diff --git a/main/includeme.html b/main/includeme.html index 24eb8464..2885f494 100644 --- a/main/includeme.html +++ b/main/includeme.html @@ -16,7 +16,7 @@ - + diff --git a/main/index.html b/main/index.html index 61adfeea..6e33cfc6 100644 --- a/main/index.html +++ b/main/index.html @@ -16,8 +16,9 @@ - + + diff --git a/main/installing_pulp_at_home.html b/main/installing_pulp_at_home.html index c73c7842..fb5e8615 100644 --- a/main/installing_pulp_at_home.html +++ b/main/installing_pulp_at_home.html @@ -16,7 +16,7 @@ - + diff --git a/main/optimisation_concepts.html b/main/optimisation_concepts.html index 7d3d65af..685eca2b 100644 --- a/main/optimisation_concepts.html +++ b/main/optimisation_concepts.html @@ -16,7 +16,7 @@ - + diff --git a/main/the_optimisation_process.html b/main/the_optimisation_process.html index ca1d2590..ea309eb8 100644 --- a/main/the_optimisation_process.html +++ b/main/the_optimisation_process.html @@ -16,7 +16,7 @@ - + diff --git a/plugins/amply.html b/plugins/amply.html index 936ce910..331287d6 100644 --- a/plugins/amply.html +++ b/plugins/amply.html @@ -16,7 +16,7 @@ - + diff --git a/plugins/index.html b/plugins/index.html index 47c6b770..03cfd3e5 100644 --- a/plugins/index.html +++ b/plugins/index.html @@ -16,7 +16,7 @@ - + diff --git a/plugins/lparray.html b/plugins/lparray.html index 64151af4..c9b72b2a 100644 --- a/plugins/lparray.html +++ b/plugins/lparray.html @@ -16,7 +16,7 @@ - + diff --git a/plugins/orloge.html b/plugins/orloge.html index 10246fb8..cdf84894 100644 --- a/plugins/orloge.html +++ b/plugins/orloge.html @@ -16,7 +16,7 @@ - + diff --git a/plugins/pytups.html b/plugins/pytups.html index 8b0cf578..35d90eb3 100644 --- a/plugins/pytups.html +++ b/plugins/pytups.html @@ -16,7 +16,7 @@ - + diff --git a/py-modindex.html b/py-modindex.html index 1798978f..71856db1 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -15,7 +15,7 @@ - + diff --git a/search.html b/search.html index 745c1e00..0b525d30 100644 --- a/search.html +++ b/search.html @@ -16,7 +16,7 @@ - + diff --git a/searchindex.js b/searchindex.js index f0024815..230a442d 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["CaseStudies/a_blending_problem", "CaseStudies/a_set_partitioning_problem", "CaseStudies/a_sudoku_problem", "CaseStudies/a_transportation_problem", "CaseStudies/a_two_stage_production_planning_problem", "CaseStudies/index", "develop/add_solver", "develop/contribute", "develop/index", "guides/how_to_configure_solvers", "guides/how_to_debug", "guides/how_to_elastic_constraints", "guides/how_to_export_models", "guides/how_to_mip_start", "guides/index", "index", "main/amply", "main/basic_python_coding", "main/includeme", "main/index", "main/installing_pulp_at_home", "main/optimisation_concepts", "main/the_optimisation_process", "plugins/amply", "plugins/index", "plugins/lparray", "plugins/orloge", "plugins/pytups", "technical/constants", "technical/index", "technical/pulp", "technical/solvers"], "filenames": ["CaseStudies/a_blending_problem.rst", "CaseStudies/a_set_partitioning_problem.rst", "CaseStudies/a_sudoku_problem.rst", "CaseStudies/a_transportation_problem.rst", "CaseStudies/a_two_stage_production_planning_problem.rst", "CaseStudies/index.rst", "develop/add_solver.rst", "develop/contribute.rst", "develop/index.rst", "guides/how_to_configure_solvers.rst", "guides/how_to_debug.rst", "guides/how_to_elastic_constraints.rst", "guides/how_to_export_models.rst", "guides/how_to_mip_start.rst", "guides/index.rst", "index.rst", "main/amply.rst", "main/basic_python_coding.rst", "main/includeme.rst", "main/index.rst", "main/installing_pulp_at_home.rst", "main/optimisation_concepts.rst", "main/the_optimisation_process.rst", "plugins/amply.rst", "plugins/index.rst", "plugins/lparray.rst", "plugins/orloge.rst", "plugins/pytups.rst", "technical/constants.rst", "technical/index.rst", "technical/pulp.rst", "technical/solvers.rst"], "titles": ["A Blending Problem", "A Set Partitioning Problem", "A Sudoku Problem formulated as an LP", "A Transportation Problem", "A Two Stage Production Planning Problem", "Case Studies", "How to add a new solver to PuLP", "How to contribute to PuLP", "Developer Guides", "How to configure a solver in PuLP", "How to debug most errors during solving", "Elastic Constraints", "How to import and export models in PuLP", "How to warm-start a solver", "User Guides", "Optimization with PuLP", "Amply", "Basic Python Coding", "pulp", "Main Topics", "Installing PuLP at Home", "Optimisation Concepts", "The Optimisation Process", "amply: AMPL data manipulation", "Plugins", "PuLP_LPARRAY: PuLP x NumPy, a match made in heaven", "orloge: OR logs parser", "pytups: smart dictionaries and tuple lists", "pulp.constants", "PuLP Internal Documentation", "pulp: Pulp classes", "pulp.apis Interface to Solvers"], "terms": {"whiska": [0, 3], "cat": [0, 1, 2, 4, 12, 13, 30], "food": 0, "shown": [0, 2, 3, 9, 12, 17, 22, 31], "abov": [0, 2, 3, 9, 17], "i": [0, 1, 2, 3, 4, 6, 7, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 25, 26, 28, 30, 31], "manufactur": 0, "uncl": 0, "ben": 0, "": [0, 1, 2, 3, 4, 6, 7, 9, 10, 12, 15, 17, 18, 20, 22, 25, 30], "want": [0, 7, 9, 10, 13, 18, 22], "produc": [0, 3, 4, 10], "product": [0, 3, 5, 15], "cheapli": 0, "possibl": [0, 1, 3, 4, 9, 10, 12, 13, 22, 31], "while": [0, 2, 4, 6, 13, 14, 21], "ensur": [0, 2, 7], "thei": [0, 3, 6, 9, 17, 18, 21, 22, 27], "meet": 0, "state": [0, 1, 12, 13], "nutrit": 0, "analysi": [0, 5], "requir": [0, 3, 6, 7, 9, 17, 18, 20, 25], "can": [0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 17, 18, 20, 21, 22, 27, 30, 31], "thu": [0, 2, 10], "vari": [0, 9, 30], "quantiti": 0, "each": [0, 1, 2, 3, 4, 6, 7, 9, 12, 13, 17, 20, 22, 30, 31], "ingredi": 0, "us": [0, 1, 2, 3, 4, 6, 7, 10, 12, 13, 14, 15, 17, 18, 20, 21, 22, 25, 26, 27, 30, 31], "main": [0, 6, 9, 10, 15, 30, 31], "being": [0, 2, 3, 9, 10, 30], "chicken": [0, 17], "beef": [0, 17], "mutton": [0, 17], "rice": [0, 17], "wheat": 0, "gel": 0, "still": [0, 1, 2, 3, 12], "standard": [0, 6, 12, 26], "cost": [0, 3, 4, 9, 12, 17, 22], "ar": [0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 17, 18, 21, 22, 30, 31], "0": [0, 1, 2, 3, 4, 6, 9, 11, 12, 13, 17, 18, 25, 26, 28, 30, 31], "013": 0, "008": 0, "010": 0, "respect": [0, 2, 3, 27, 30], "002": 0, "005": 0, "001": 0, "all": [0, 1, 2, 3, 6, 7, 9, 10, 12, 13, 17, 20, 22, 25, 30, 31], "per": [0, 2, 3, 4, 6, 14, 22], "gram": 0, "For": [0, 3, 7, 9, 10, 12, 13, 15, 17, 18, 21, 22, 31], "thi": [0, 1, 2, 3, 4, 6, 7, 9, 10, 12, 13, 15, 17, 20, 22, 28, 30, 31], "exercis": 0, "we": [0, 1, 2, 3, 4, 6, 7, 9, 12, 13, 15, 18, 21, 22, 30], "ignor": 0, "vitamin": 0, "miner": 0, "ani": [0, 1, 2, 9, 10, 12, 15, 17, 20, 21, 22, 27], "like": [0, 1, 3, 4, 9, 10, 17, 21, 25], "veri": [0, 2, 3, 7, 9, 10, 12, 21, 27], "small": [0, 3], "anywai": 0, "contribut": [0, 4, 8, 15], "total": [0, 1, 3, 4, 13, 22, 31], "weight": 0, "protein": 0, "fat": 0, "fibr": 0, "salt": 0, "final": [0, 2, 3, 4, 7, 9, 10, 11, 22, 31], "given": [0, 2, 3, 13, 17, 18, 22, 30, 31], "tabl": [0, 1, 2, 3, 12, 13], "below": [0, 2, 3, 10, 12, 13, 15, 17, 20], "stuff": 0, "100": [0, 3, 4, 17, 30], "080": 0, "200": [0, 3, 11], "150": 0, "110": 0, "003": 0, "007": 0, "000": 0, "bran": 0, "040": 0, "first": [0, 1, 2, 3, 4, 6, 7, 9, 10, 17, 20, 22], "consid": [0, 2, 3, 22], "build": [0, 8, 10, 12, 30], "simpl": [0, 3, 9, 12, 17, 22], "python": [0, 3, 7, 9, 10, 12, 15, 18, 19, 20, 22, 23, 26, 28, 31], "model": [0, 1, 2, 4, 5, 6, 9, 10, 13, 14, 15, 17, 18, 19, 20, 30, 31], "assum": [0, 3, 7, 15, 17, 30, 31], "make": [0, 1, 2, 3, 4, 8, 9, 10, 17, 18, 20, 22, 27, 30, 31], "out": [0, 1, 2, 3, 4, 10, 13, 26], "just": [0, 2, 3, 6, 9, 13, 25, 31], "two": [0, 3, 5, 6, 7, 9, 10, 11, 12, 13, 15, 18, 27], "defin": [0, 1, 2, 3, 4, 6, 11, 17, 22, 27, 30], "our": [0, 2, 3, 4, 12, 13, 22], "x_1": [0, 21, 30], "text": [0, 2, 9, 10, 31], "percentag": 0, "meat": [0, 17], "x_2": [0, 21, 30], "limit": [0, 3, 4, 22, 31], "greater": [0, 3], "than": [0, 2, 3, 6, 9], "zero": [0, 1, 3, 17, 20, 30], "must": [0, 1, 2, 3, 4, 12, 13, 17, 18, 20, 21, 22, 31], "note": [0, 1, 2, 3, 4, 12, 20, 21, 28, 30], "implement": [0, 6, 22, 31], "enter": [0, 2, 3, 17, 20, 22], "list": [0, 1, 2, 3, 4, 6, 9, 11, 12, 13, 15, 18, 20, 24, 30, 31], "separ": 0, "other": [0, 1, 2, 3, 4, 6, 9, 10, 12, 18, 19, 20, 22, 30, 31], "becom": [0, 1, 2, 10, 12, 17, 18], "textbf": 0, "min": [0, 3, 25], "sum": [0, 2, 3, 17, 25, 30], "met": [0, 2, 3], "1": [0, 1, 2, 3, 4, 6, 9, 10, 11, 13, 14, 17, 18, 25, 26, 28, 30, 31], "ge": [0, 3, 4, 11], "8": [0, 2, 4, 10, 17], "6": [0, 2, 17], "le": [0, 4, 11], "2": [0, 2, 3, 4, 6, 11, 14, 17, 18, 20, 25, 26, 28, 30, 31], "4": [0, 1, 2, 3, 4, 12, 13, 17, 18, 20, 22, 26, 30], "To": [0, 1, 2, 3, 4, 7, 10, 13, 17, 18, 20, 22], "obtain": [0, 20], "linear": [0, 1, 2, 3, 18, 19, 22, 25, 30], "program": [0, 1, 2, 3, 9, 10, 17, 18, 19, 20], "write": [0, 2, 7, 14, 17, 20, 30, 31], "short": [0, 17], "call": [0, 2, 3, 6, 9, 11, 17, 18, 20, 21, 22, 30, 31], "pulp": [0, 1, 2, 4, 5, 8, 10, 13, 14, 17, 19, 22, 24, 27], "which": [0, 2, 3, 4, 7, 11, 14, 17, 18, 21, 22, 30, 31], "solver": [0, 2, 4, 7, 8, 10, 14, 15, 18, 20, 21, 22, 26, 28, 29, 30], "explain": [0, 2, 3, 6, 9, 15], "step": [0, 7, 9, 11, 17, 22], "how": [0, 1, 3, 4, 8, 14, 15, 17, 18, 22], "It": [0, 6, 7, 9, 12, 20, 25, 26, 27, 31], "suggest": [0, 18, 22], "you": [0, 2, 3, 7, 9, 10, 12, 13, 15, 17, 18, 20, 21, 22, 23, 31], "repeat": [0, 20], "yourself": 0, "code": [0, 2, 3, 6, 7, 12, 13, 15, 19, 20, 27], "exampl": [0, 2, 3, 8, 9, 10, 11, 14, 17, 19, 20, 22, 25, 26, 27, 30], "found": [0, 1, 2, 3, 4, 6, 9, 18, 26, 28, 31], "whiskasmodel1": 0, "py": [0, 1, 2, 3, 4, 6, 7, 9, 17, 20], "start": [0, 2, 3, 14, 15, 17, 20, 22, 31], "your": [0, 3, 6, 7, 9, 10, 17, 18, 19, 21, 22, 25, 31], "file": [0, 1, 2, 3, 4, 6, 7, 10, 11, 12, 14, 17, 18, 20, 22, 28, 30, 31], "should": [0, 2, 3, 7, 9, 20, 22, 31], "head": [0, 3, 17], "comment": [0, 2, 3, 18], "section": [0, 6, 9, 12, 17], "outlin": 0, "purpos": 0, "author": [0, 1, 2, 3, 4, 13], "antoni": [0, 2, 3, 15], "phillip": [0, 2, 3, 15], "dr": [0, 2, 3], "stuart": [0, 1, 2, 3, 13, 15, 18, 31], "mitchel": [0, 1, 2, 3, 13, 15, 18, 31], "2007": [0, 3, 31], "Then": [0, 1, 17, 20], "import": [0, 1, 2, 3, 4, 6, 10, 13, 14, 15, 19, 20, 21, 22, 25, 26, 30], "from": [0, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 17, 18, 21, 22, 25, 28, 30, 31], "prob": [0, 2, 3, 9, 10, 12, 18, 25, 31], "although": [0, 9, 10], "its": [0, 3, 6, 9, 10, 11, 16, 30, 31], "name": [0, 2, 3, 4, 6, 7, 9, 12, 17, 18, 20, 25, 30, 31], "creat": [0, 1, 2, 3, 4, 8, 9, 12, 13, 17, 18, 22, 26, 30, 31], "lpproblem": [0, 1, 2, 3, 4, 6, 9, 11, 12, 13, 18, 25], "ha": [0, 3, 6, 10, 11, 12, 13, 14, 16, 31], "paramet": [0, 3, 4, 10, 12, 17, 23, 30, 31], "arbitrari": [0, 31], "string": [0, 17, 28, 30, 31], "second": [0, 3, 6, 9, 31], "either": [0, 11, 17, 20, 22, 30, 31], "lpminim": [0, 1, 2, 3, 9, 12, 13, 18, 25, 28, 30], "lpmaxim": [0, 2, 4, 6, 28, 30], "depend": [0, 7, 9, 17, 31], "type": [0, 11, 14, 19, 20, 21, 25, 30, 31], "lp": [0, 3, 4, 5, 6, 9, 10, 11, 15, 17, 18, 20, 30, 31], "try": [0, 2, 6, 9, 14, 17], "solv": [0, 1, 2, 3, 4, 6, 9, 12, 13, 14, 15, 18, 20, 21, 25, 28, 30, 31], "contain": [0, 1, 2, 3, 6, 11, 17, 18, 21, 28, 30], "data": [0, 2, 3, 4, 6, 14, 15, 17, 22, 24, 26, 30, 31], "x1": [0, 18], "x2": [0, 18], "lpvariabl": [0, 1, 2, 3, 4, 9, 12, 13, 18, 20, 25, 30], "class": [0, 8, 12, 15, 18, 27, 28, 29, 31], "four": [0, 4], "what": [0, 7, 10, 14, 17, 20, 22], "repres": [0, 2, 4, 17, 30], "lower": [0, 3, 9, 13, 30], "bound": [0, 3, 13, 21, 22, 26, 30], "third": [0, 2], "upper": [0, 3, 30], "fourth": [0, 17], "essenti": [0, 2], "discret": 0, "continu": [0, 4, 12, 17, 20, 21, 28, 30], "option": [0, 2, 3, 6, 9, 30, 31], "lpcontinu": [0, 28], "lpinteg": [0, 1, 3, 12, 13, 28], "default": [0, 3, 6, 9, 10, 12, 13, 17, 18, 20, 30, 31], "If": [0, 2, 3, 9, 10, 13, 17, 18, 22, 31], "were": [0, 2, 3, 17], "number": [0, 1, 2, 3, 10, 11, 12, 13, 17, 21, 22, 27, 30, 31], "would": [0, 1, 2, 3, 4, 9, 13, 17, 20, 22, 31], "need": [0, 2, 3, 6, 7, 9, 10, 12, 13, 15, 17, 20, 21, 22, 27], "input": [0, 3, 17, 30], "sinc": [0, 2, 3, 9, 10, 21], "directli": [0, 7, 9, 10, 12], "none": [0, 2, 3, 6, 9, 12, 17, 26, 30, 31], "e": [0, 1, 2, 3, 6, 9, 10, 12, 13, 17, 22, 30, 31], "posit": [0, 17, 30], "neg": [0, 3, 22, 30], "infin": [0, 30], "few": [0, 2], "rest": [0, 2, 3], "take": [0, 2, 3, 6, 10, 12, 22, 31], "valu": [0, 1, 2, 3, 4, 6, 9, 10, 11, 12, 14, 17, 18, 21, 22, 25, 28, 30, 31], "howev": [0, 2, 15, 17, 22], "wish": [0, 1], "specifi": [0, 1, 2, 3, 4, 11, 12, 13, 17, 21, 30, 31], "specif": [0, 4, 10, 17, 23, 30], "set": [0, 2, 3, 4, 5, 6, 9, 12, 13, 15, 22, 23, 25, 28, 30, 31], "cannot": [0, 2, 3, 6, 12, 17, 22, 31], "leav": [0, 3, 9], "entri": 0, "blank": 0, "g": [0, 1, 3, 6, 9, 10, 12, 13, 22, 31], "upbound": [0, 1, 12, 13, 30], "explicitli": [0, 1, 2], "chickenperc": 0, "beefperc": 0, "now": [0, 3, 7, 9, 10, 12, 16, 17, 20, 31], "begin": [0, 4, 15, 17], "collect": 0, "oper": [0, 2, 3, 6, 9, 10, 17, 22, 25, 27, 30], "logic": [0, 2, 3, 4, 6, 22], "an": [0, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 25, 30, 31], "comma": [0, 17], "end": [0, 2, 4, 9, 12, 13, 17], "statement": [0, 2, 3, 23], "ad": [0, 2, 3, 4, 8, 9, 10, 17, 18, 30, 31], "non": [0, 1, 2, 3, 30], "alreadi": [0, 3, 9, 10, 13, 20, 22], "includ": [0, 3, 4, 7, 8, 9, 10, 15, 17, 18, 20, 22, 26], "when": [0, 2, 3, 6, 7, 9, 10, 12, 13, 17, 31], "done": [0, 4, 6, 7, 9, 17, 21, 22], "again": [0, 2, 9, 12, 22, 25, 30, 31], "more": [0, 2, 3, 6, 9, 10, 17, 18, 22, 25, 28, 30, 31], "after": [0, 2, 4, 9, 17, 20, 22, 30, 31], "equat": 0, "brief": [0, 30], "caus": [0, 10], "five": [0, 3, 22], "percentagessum": 0, "proteinrequir": 0, "fatrequir": 0, "fibrerequir": 0, "saltrequir": 0, "writelp": [0, 2, 3, 4, 10, 11, 30], "copi": [0, 9, 30, 31], "inform": [0, 3, 6, 9, 10, 12, 15, 17, 18, 26, 30, 31], "directori": [0, 3, 6, 7, 9, 10, 18, 20, 31], "block": 0, "run": [0, 3, 8, 9, 10, 13, 18, 20, 22], "onc": [0, 2, 3, 9, 13, 17], "successfulli": [0, 7], "open": [0, 2, 6, 7, 9, 10, 18, 20, 22], "editor": [0, 10], "see": [0, 3, 9, 10, 12, 13, 15, 18, 25, 31], "do": [0, 2, 4, 6, 7, 9, 10, 12, 13, 17, 18, 20, 22, 25, 30], "notic": [0, 3], "assign": [0, 13, 17], "equal": [0, 2, 3, 4, 11], "sign": [0, 30], "line": [0, 2, 3, 6, 7, 9, 10, 17, 20, 27, 31], "becaus": [0, 2, 3, 6, 9, 12], "method": [0, 7, 8, 9, 11, 13, 21, 22, 30], "perform": [0, 13, 17, 31], "whiskasmodel": 0, "addit": [0, 6, 10, 14, 25, 30, 31], "dot": 0, "between": [0, 1, 2, 6, 12, 13], "seen": [0, 6, 10, 12], "frequent": 0, "orient": 0, "softwar": [0, 20, 22], "written": [0, 2, 4, 9, 11, 12, 18, 20, 31], "choos": [0, 9], "bracket": [0, 17], "left": [0, 11, 20], "empti": [0, 17, 30], "case": [0, 1, 2, 3, 4, 9, 10, 13, 15], "cplex": [0, 10, 18, 20, 21, 22, 26, 31], "choic": [0, 2, 4, 7], "result": [0, 2, 7, 9, 12, 17], "displai": [0, 17, 18, 20], "output": [0, 4, 12, 17, 20, 26, 30], "u": [0, 3, 18], "firstli": 0, "request": [0, 8], "statu": [0, 2, 4, 6, 7, 9, 12, 18, 26, 28, 30, 31], "one": [0, 1, 2, 3, 4, 6, 7, 9, 10, 12, 13, 17, 21, 30], "Not": [0, 9, 28], "infeas": [0, 3, 14, 20, 28, 31], "unbound": [0, 20, 28, 31], "undefin": [0, 28], "optim": [0, 2, 3, 4, 13, 18, 20, 26, 28, 31], "return": [0, 1, 2, 3, 6, 9, 11, 12, 13, 17, 20, 28, 30, 31], "integ": [0, 2, 3, 12, 17, 19, 20, 28, 30, 31], "convert": [0, 4, 30], "signific": 0, "mean": [0, 2, 9, 12, 22], "lpstatu": [0, 2, 4, 18, 28], "dictionari": [0, 3, 4, 9, 12, 13, 15, 24, 26, 28, 30, 31], "dict": [0, 1, 2, 3, 4, 12, 13, 17, 30, 31], "squar": [0, 2, 17], "print": [0, 1, 2, 4, 9, 13, 17, 25, 30], "screen": [0, 2, 4], "resolv": [0, 3, 4, 30, 31], "optimum": [0, 4], "v": [0, 2, 4, 10, 13, 31], "varvalu": [0, 4, 12, 30], "loop": [0, 2, 3, 19, 22], "cycl": [0, 3], "through": [0, 3, 7, 17, 20, 22], "follow": [0, 2, 3, 6, 7, 9, 10, 11, 12, 13, 17, 18, 20, 21, 26, 30, 31], "properti": [0, 6], "optimis": [0, 4, 15, 19, 20], "right": [0, 9, 11], "format": [0, 12, 17, 30, 31], "attribut": [0, 6, 9, 17, 30, 31], "show": [0, 3, 7, 9, 17, 31], "up": [0, 3, 12, 17, 22, 30], "33": 0, "66": 0, "67": [0, 26], "96": 0, "cent": 0, "fulli": 0, "whilst": [0, 2, 3], "could": [0, 2, 3, 10, 12, 13, 17, 22], "littl": [0, 2, 9], "look": [0, 3, 9, 10, 15, 17, 22], "better": [0, 2, 9, 17], "wai": [0, 1, 2, 3, 6, 7, 9, 10, 12, 17, 18, 20, 21, 22], "doe": [0, 1, 6, 9, 12, 17, 30, 31], "mix": [0, 17, 21], "much": [0, 2, 3, 4, 17], "easier": [0, 2, 12], "chang": [0, 3, 4, 6, 7, 9, 20, 21, 22, 28, 30], "test": [0, 8, 12, 18, 19, 26, 31], "same": [0, 2, 3, 9, 10, 12, 13, 17, 22, 30, 31], "algebra": 0, "differ": [0, 9, 17, 22, 31], "100g": 0, "also": [0, 2, 3, 7, 9, 10, 12, 13, 17, 20, 21, 22, 26, 27], "amount": [0, 3, 30], "formal": [0, 22], "sure": [0, 3, 7, 9, 20, 22], "unit": [0, 3, 4, 22], "x_3": [0, 21], "x_4": 0, "x_5": 0, "x_6": 0, "minimis": [0, 2, 3, 22], "know": [0, 3, 7, 9, 13], "decid": [0, 3, 4, 22], "so": [0, 2, 3, 4, 7, 9, 10, 12, 13, 15, 17, 22, 30, 31], "divid": [0, 20], "multipli": 0, "give": [0, 2, 3, 4, 9, 13, 14, 17, 22, 30], "whole": [0, 3, 7, 14, 26], "x": [0, 1, 9, 11, 12, 13, 15, 17, 18, 24, 26, 30, 31], "_6": 0, "have": [0, 1, 2, 3, 4, 7, 9, 10, 12, 13, 15, 17, 20, 21, 22, 25, 27, 31], "least": [0, 1, 3, 15, 31], "8g": 0, "6g": 0, "2g": 0, "4g": 0, "previou": [0, 3, 9, 12, 13], "allow": [0, 1, 6, 9, 21, 23, 25, 31], "improv": [0, 31], "whiskasmodel2": 0, "As": [0, 2, 3, 6, 9, 10, 12, 17], "last": [0, 3, 9], "time": [0, 2, 3, 6, 7, 12, 20, 21, 22, 26, 31], "advis": 0, "date": 0, "next": [0, 4, 9, 17, 22], "befor": [0, 6, 7, 9, 12, 15, 17, 31], "kei": [0, 3, 17, 22, 28, 30, 31], "nutrient": 0, "These": [0, 2, 4, 6, 9, 17], "clearli": [0, 2, 22], "laid": 0, "easili": [0, 3, 17, 22], "someon": [0, 31], "knowledg": [0, 17], "refer": [0, 3, 4, 17, 31], "percent": 0, "proteinperc": 0, "fatperc": 0, "fibreperc": 0, "saltperc": 0, "usual": [0, 3, 4, 6, 9, 10, 13, 22], "pass": [0, 6, 7, 9, 10, 12, 13, 17, 20, 31], "ingredient_var": 0, "ingr_ingredientnam": 0, "ingr_mutton": 0, "referenc": [0, 3], "ingr": 0, "simpli": [0, 2, 3, 17], "extract": [0, 20], "comprehens": [0, 3, 4, 22], "lpsum": [0, 1, 2, 3, 4, 12, 13, 18, 30], "add": [0, 4, 7, 8, 9, 10, 15, 18, 30, 31], "element": [0, 1, 2, 4, 17, 30, 31], "further": [0, 3, 7, 21, 22], "5": [0, 1, 2, 3, 4, 9, 11, 12, 13, 17, 30, 31], "describ": [0, 10, 20], "them": [0, 2, 3, 9, 10, 12, 17, 18], "etc": [0, 3, 9, 20, 26], "exactli": [0, 1, 2, 3, 10, 12], "60": 0, "40": 0, "lead": [0, 2, 3, 13], "52": [0, 6], "determin": [1, 4, 22], "item": [1, 4, 13, 30], "smaller": [1, 2], "subset": [1, 23, 30], "onli": [1, 2, 3, 6, 7, 9, 12, 13, 17, 21, 23, 31], "relat": [1, 2, 30, 31], "pack": 1, "cover": [1, 6, 31], "In": [1, 2, 4, 6, 7, 9, 13, 17, 20, 22, 30], "studi": [1, 4, 15], "wed": [1, 13], "planner": 1, "guest": [1, 12, 13], "seat": [1, 12, 13], "alloc": 1, "invit": 1, "The": [1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 31], "maximis": [1, 2, 22], "happi": [1, 12, 13], "mai": [1, 2, 3, 4, 9, 10, 11, 12, 20, 21, 22, 30, 31], "enumer": 1, "though": [1, 12], "approach": [1, 2], "intract": 1, "larg": [1, 2, 3], "without": [1, 17, 27, 30], "column": [1, 2, 18, 20, 26, 30], "gener": [1, 6, 10, 17, 18, 22, 30, 31], "advantag": [1, 9, 12, 22], "object": [1, 4, 6, 9, 10, 11, 12, 17, 18, 20, 21, 22, 26, 30, 31], "function": [1, 4, 6, 7, 10, 11, 15, 18, 20, 22, 25, 27, 30, 31], "co": 1, "effici": [1, 3, 25, 27], "express": [1, 2, 4, 18, 21, 22], "allcombin": [1, 12, 13, 30], "possible_t": [1, 12, 13], "tupl": [1, 2, 3, 12, 13, 15, 24, 30, 31], "c": [1, 2, 3, 4, 9, 11, 12, 13, 20, 25, 30, 31], "max_table_s": [1, 12, 13], "binari": [1, 2, 10, 12, 13, 20, 25, 28, 30, 31], "variabl": [1, 4, 6, 10, 14, 17, 18, 20, 21, 22, 25, 26, 31], "solut": [1, 4, 5, 6, 9, 10, 12, 13, 18, 20, 21, 26, 28, 30, 31], "otherwis": [1, 6, 9, 18, 31], "lowbound": [1, 4, 9, 12, 13, 30], "script": [1, 20], "difficult": [1, 21], "seating_model": [1, 12, 13], "maximum": [1, 3, 12, 13, 31], "max_tabl": [1, 12, 13], "maximum_number_of_t": [1, 12, 13], "constraint": [1, 4, 10, 12, 14, 15, 18, 20, 21, 22, 26, 31], "guarante": [1, 3, 22], "f": [1, 3, 12, 13, 30], "must_seat_": [1, 12, 13], "full": [1, 2, 4, 5, 15], "here": [1, 3, 4, 6, 7, 9, 10, 12, 13, 17, 21], "2009": [1, 13], "b": [1, 2, 3, 11, 12, 13, 18, 21, 30], "d": [1, 3, 11, 12, 13], "j": [1, 2, 3, 4, 12, 13, 17, 18], "k": [1, 2, 12, 13, 30], "l": [1, 2, 12, 13], "m": [1, 2, 7, 12, 13, 18], "n": [1, 2, 12, 13, 25, 31], "o": [1, 3, 6, 12, 13, 15, 17, 31], "p": [1, 4, 12, 13], "q": [1, 12, 13], "r": [1, 2, 4, 7, 9, 12, 13, 18, 25, 30], "split": [1, 6, 12, 13], "def": [1, 6, 12, 13, 17], "find": [1, 2, 4, 6, 7, 9, 12, 13, 18, 21, 30], "calcul": [1, 12, 13, 17, 30], "distanc": [1, 11, 12, 13], "letter": [1, 12, 13], "ab": [1, 12, 13, 25], "ord": [1, 12, 13], "chosen": [1, 3, 13], "len": [1, 13], "incomplet": 2, "9x9": 2, "fill": [2, 6, 9, 14], "accord": 2, "sever": [2, 3, 9, 10, 12, 17, 26], "rule": 2, "within": [2, 4, 22], "9": [2, 12, 17, 25], "individu": 2, "3x3": 2, "box": [2, 25], "grid": 2, "row": [2, 26], "On": [2, 7, 18], "page": [2, 7, 10, 18], "wikipedia": [2, 17], "modif": [2, 31], "order": [2, 3, 4, 7, 9, 13, 15, 17, 30, 31], "81": 2, "awfulli": 2, "complic": [2, 4], "necessari": [2, 9, 30], "45": 2, "mani": [2, 3, 4, 9, 12, 13, 22], "satisfi": [2, 3, 7], "There": [2, 3, 6, 9, 10], "big": [2, 9, 10], "compar": [2, 3], "pair": [2, 31], "strictli": 2, "prefer": [2, 9], "present": [2, 4, 5, 13], "eleg": 2, "729": 2, "where": [2, 3, 11, 13, 14, 20, 21, 30, 31], "correspond": [2, 4, 6, 17], "might": 2, "natur": [2, 3, 17], "sai": 2, "whether": [2, 31], "exist": [2, 6, 9, 17, 28, 30, 31], "true": [2, 6, 9, 10, 13, 17, 21, 30, 31], "fals": [2, 6, 9, 30, 31], "therefor": 2, "place": [2, 17], "clear": [2, 17], "interestingli": 2, "anoth": [2, 3, 9, 10, 12, 17, 18, 22], "definit": [2, 3, 17, 28], "realli": [2, 9, 12], "anyth": 2, "neither": 2, "nor": 2, "known": [2, 4, 21, 22], "plu": 2, "own": [2, 9, 10, 16, 17], "featur": [2, 19], "overlap": 2, "overal": 2, "seem": 2, "obviou": 2, "those": [2, 3, 4, 9, 13], "changeabl": 2, "actual": [2, 4, 7, 9, 22, 30, 31], "wherea": [2, 17], "control": [2, 9, 31], "feasibl": [2, 10, 20], "instead": [2, 3, 12, 17, 22, 27], "introductori": 2, "edit": [2, 3, 4, 9, 31], "nathan": 2, "sudermann": 2, "merx": 2, "uniqu": [2, 12, 31], "exact": 2, "val": [2, 30], "col": [2, 26], "rang": [2, 17, 30], "10": [2, 3, 4, 9, 12, 17, 26, 30, 31], "indic": [2, 30], "similar": [2, 7, 9, 12, 17, 20, 31], "had": 2, "effect": [2, 21, 22, 30], "been": [2, 3, 10, 12, 13, 16, 17, 31], "wast": 2, "index": [2, 4, 7, 12, 18, 25, 30, 31], "3": [2, 3, 4, 9, 12, 17, 18, 20, 25, 26, 28, 30, 31], "locat": [2, 6, 9, 20, 31], "combin": [2, 3, 4, 10, 18], "choice_4_2_9": 2, "abl": [2, 9, 12, 20], "wa": [2, 3, 9, 10, 17, 30, 31], "situat": [2, 3, 10, 22], "don": [2, 3, 22], "t": [2, 3, 4, 21, 22], "concern": 2, "read": [2, 3, 4, 9, 12, 15, 31], "particular": [2, 6, 10, 22], "occur": [2, 4], "input_data": 2, "7": [2, 4, 12, 17, 18, 20, 26], "meaning": [2, 3, 4, 7], "draw": 2, "put": [2, 3, 10, 22], "inbetween": 2, "everi": [2, 3, 7, 17], "sudokuout": 2, "txt": [2, 7, 18], "folder": [2, 7, 10, 18, 20], "overwritten": [2, 9], "w": [2, 3, 4, 6], "str": [2, 4, 30, 31], "close": [2, 20], "user": [2, 9, 10, 15, 17, 31], "provid": [2, 12, 15, 22, 26, 27, 31], "sudoku1": 2, "did": [2, 9, 10, 31], "fact": [2, 17], "multipl": [2, 17, 31], "well": [2, 6, 17, 22, 31], "over": [2, 9, 12], "success": [2, 30, 31], "deem": 2, "80": 2, "new": [2, 3, 7, 8, 9, 12, 15, 17, 18, 22, 30], "els": [2, 6, 9, 12, 17, 31], "break": [2, 22], "avail": [2, 3, 4, 8, 9, 12, 15, 17, 18, 22, 31], "sudoku2": 2, "long": [2, 3, 12, 17, 20, 22], "delet": [2, 9, 31], "singl": 2, "remov": [2, 6], "sudden": 2, "dramat": 2, "increas": [2, 21, 22], "boutiqu": 3, "breweri": 3, "warehous": 3, "distribut": [3, 20], "beer": 3, "carefulli": [3, 22], "bar": 3, "At": [3, 4, 13, 17], "week": [3, 22], "send": [3, 7], "offic": 3, "crate": 3, "dispatch": 3, "appropri": [3, 22], "interact": 3, "comput": [3, 9, 12], "tell": [3, 9], "suppli": 3, "minim": [3, 6, 11, 12, 28], "suppos": 3, "1000": 3, "4000": 3, "500": [3, 11], "900": 3, "1800": 3, "700": 3, "graphic": [3, 9], "represent": 3, "often": [3, 10, 17, 21, 22], "help": [3, 7, 14], "dure": [3, 9, 14, 15, 31], "good": [3, 10, 21, 31], "node": [3, 26, 31], "demand": [3, 4], "arc": 3, "connect": [3, 9], "diagram": [3, 22], "pub": 3, "a1": [3, 18], "ship": 3, "a5": 3, "b1": 3, "b5": 3, "let": [3, 22, 25], "x_": 3, "ldot": 3, "foral": 3, "mathbb": 3, "z": [3, 12], "fraction": [3, 20, 31], "loos": 3, "sometim": [3, 9, 10, 22], "due": 3, "factor": 3, "economi": 3, "scale": 3, "fix": [3, 7, 10, 14, 30], "truck": 3, "accommod": 3, "impli": [3, 9, 13, 17, 26], "go": [3, 7, 9, 12, 20, 21, 31], "jump": 3, "extra": [3, 5, 8], "later": [3, 4, 15], "cours": [3, 10, 17], "shall": 3, "capac": [3, 4], "deliv": 3, "assumpt": 3, "talk": [3, 9, 22], "financi": 3, "manag": 3, "she": 3, "dollar": 3, "routea1": 3, "routeb5": 3, "sum_": [3, 4, 30], "c_": 3, "come": [3, 9, 22, 30, 31], "consider": [3, 6, 14, 22], "exce": [3, 17], "similarli": 3, "less": 3, "Such": 3, "a2": [3, 9, 18], "a3": 3, "a4": 3, "b2": 3, "b3": 3, "b4": 3, "s_w": 3, "avoid": 3, "lost": 3, "sale": 3, "penalti": [3, 11, 20, 30], "oversuppli": 3, "incur": 3, "_balance_": 3, "d_b": 3, "blend": [3, 5, 15], "beerdistributionproblem": 3, "associ": [3, 4, 17, 30], "sub": 3, "structur": [3, 6, 9, 12, 17, 23], "appear": 3, "easi": [3, 7, 9, 27], "makedict": 3, "previous": [3, 13, 31], "path": [3, 6, 10, 14, 20, 31], "made": [3, 12, 15, 24], "rout": 3, "var": [3, 31], "route_tupl": 3, "route_a_2": 3, "intern": [3, 12, 15, 31], "sum_of_transporting_cost": 3, "normal": [3, 17, 30], "turn": [3, 13, 17], "constrain": [3, 25], "max": [3, 4, 25, 31], "minimum": [3, 10], "sum_of_products_out_of_warehouse_": 3, "sum_of_products_into_bar": 3, "programm": [3, 17], "alwai": [3, 10, 17], "about": [3, 9, 11, 31], "detail": [3, 6, 10, 21, 22], "check": [3, 10, 13, 14, 30, 31], "integr": [3, 7, 14], "_balanced_": 3, "store": [3, 6, 9, 12, 17], "somewher": [3, 9], "purchas": [3, 4], "altern": [3, 10, 12], "sourc": [3, 8, 31], "substitut": 3, "5000": 3, "4100": 3, "sent": 3, "_dummy_": 3, "flow": 3, "dummi": 3, "origin": [3, 7, 12, 22], "expand": 3, "balanc": 3, "realist": 3, "stock": 3, "unbalanc": 3, "excess": 3, "get": [3, 6, 7, 9, 10, 12, 13, 18, 20, 31], "beerdistributionproblemwarehouseextens": 3, "beerdistributionproblemcompetitorextens": 3, "shipment": 3, "totalcost": 3, "____": 3, "___": 3, "rise": 3, "summari": [3, 7, 22], "mike": 3, "sullivan": [3, 15], "1234567": 3, "__________": 3, "forecast": 3, "schedul": 3, "_____": 3, "form": [3, 11, 18, 21, 22], "updat": [3, 17, 22], "cheaper": 3, "along": 3, "affect": [3, 17], "save": [3, 7, 12, 31], "reduc": [3, 9, 12], "decis": [4, 21, 22], "maker": 4, "materi": [4, 17], "labor": 4, "resourc": 4, "maxim": [4, 6, 20, 28], "profit": [4, 22], "compani": 4, "gtc": 4, "wrench": 4, "plier": 4, "subject": [4, 12], "steel": 4, "machin": [4, 7, 9, 22], "capabl": 4, "mold": 4, "assembli": 4, "market": 4, "earn": 4, "unknown": [4, 17, 31], "period": [4, 22], "revenu": [4, 22], "uncertainti": [4, 22], "scenario": 4, "probabl": [4, 9], "packag": [4, 7, 9, 12, 16, 20, 31], "vector": [4, 30], "databas": 4, "price": [4, 9, 12, 30], "130": 4, "capsteel": 4, "27": 4, "capmold": 4, "21": [4, 17, 26], "lb": [4, 25], "capacity_ub": 4, "15": [4, 17, 26], "16": [4, 26], "steelpric": 4, "58": 4, "pscenario": 4, "25": [4, 17], "wrenchearn": 4, "160": 4, "90": 4, "plierearn": 4, "capassembli": 4, "pricescenario": 4, "priceitem": 4, "sublist": 4, "zip": [4, 17], "price_dict": 4, "capacity_dict": 4, "steel_dict": 4, "molding_dict": 4, "assembly_dict": 4, "production_var": 4, "steelpurchas": 4, "goal": [4, 22], "net": 4, "gemstoneprob": 4, "gemston": 4, "tool": [4, 31], "base": [4, 7, 8, 9, 12, 20, 28, 30, 31], "notat": 4, "summat": 4, "differenti": 4, "comparison": 4, "appli": [4, 8, 11, 30], "two_stage_stochastic_gemstonetool": 4, "loui": 4, "luangkesorn": 4, "lugerpitt": 4, "gmail": [4, 15], "com": [4, 7, 10, 15, 16, 18, 23, 25, 26, 31], "2019": [4, 13], "http": [4, 10, 16, 18, 23, 25, 26, 27, 31], "github": [4, 7, 10, 16, 18, 20, 23, 25, 26, 27, 31], "lluang": 4, "titl": 4, "taken": [4, 10, 12, 13], "bertsima": 4, "freund": 4, "4th": 4, "dmd": 4, "cap_": 4, "hour": [4, 22], "ub_w": 4, "ub_p": 4, "w_": 4, "p_": 4, "5w_": 4, "nonneg": 4, "consol": [4, 9, 31], "A": [5, 7, 9, 11, 12, 13, 15, 17, 18, 22, 25, 30, 31], "problem": [5, 6, 9, 12, 14, 15, 17, 18, 20, 21, 30, 31], "descript": 5, "formul": [5, 6, 15, 31], "partit": [5, 12, 13, 15], "sudoku": [5, 15, 25], "expert": 5, "transport": [5, 15], "extens": 5, "ongo": 5, "monitor": [5, 22], "stage": [5, 15], "plan": [5, 15], "organ": 6, "configur": [6, 14, 15, 18, 31], "instal": [6, 8, 10, 15, 19, 31], "system": [6, 7, 9, 10, 18], "smallest": 6, "mipcl_api": 6, "mipcl_cmd": [6, 9, 31], "lpsolver": [6, 31], "lpsolver_cmd": [6, 31], "core": 6, "command": [6, 7, 9, 10, 17, 20, 31], "subprocess": [6, 31], "pulpsolvererror": [6, 10, 31], "constant": [6, 12, 15, 21, 29, 30], "warn": 6, "__init__": [6, 17], "self": [6, 12, 17, 28, 30, 31], "keepfil": [6, 9, 31], "mip": [6, 9, 14, 20, 21, 26, 30, 31], "msg": [6, 9, 10, 13, 18, 31], "timelimit": [6, 9, 31], "thing": [6, 9, 10, 31], "declar": [6, 23], "level": [6, 9, 17, 31], "some": [6, 7, 9, 10, 11, 12, 13, 17, 21, 30, 31], "argument": [6, 9, 10, 13, 17, 30, 31], "ideal": 6, "convent": [6, 12], "initi": [6, 9, 13, 17, 30, 31], "parent": 6, "expect": [6, 20, 31], "execut": [6, 7, 9, 14, 18, 31], "rais": [6, 30, 31], "tmpmp": 6, "tmpsol": 6, "create_tmp_fil": [6, 31], "mp": [6, 9, 10, 14, 18, 30, 31], "sol": [6, 9], "sens": [6, 11, 12, 22, 28, 30], "swap": 6, "handl": [6, 10], "invers": 6, "checkduplicatevar": 6, "checklengthvar": 6, "writemp": [6, 10, 12, 30], "mpssens": [6, 30], "report": [6, 10, 18, 20, 26], "duplic": [6, 10], "except": [6, 17, 21, 28, 30, 31], "cmd": [6, 14, 20], "solfil": 6, "ismip": 6, "relax": [6, 20], "pipe": 6, "devnul": 6, "return_cod": 6, "stdout": 6, "stderr": 6, "undo": 6, "finish": 6, "error": [6, 14, 15], "lpstatusnotsolv": [6, 28], "status_sol": 6, "lpsolutionnosolutionfound": [6, 28], "readsol": [6, 31], "delete_tmp_fil": [6, 31], "assignstatu": 6, "lpstatusinfeas": [6, 28], "assignvarsv": 6, "executableextens": [6, 31], "mps_mipcl": 6, "modifi": [6, 7, 13, 17, 30], "_all_solv": 6, "coupl": 6, "test_pulp": [6, 7], "mipcl_cmdtest": 6, "basesolvertest": 6, "pulptest": [6, 18, 20], "solveinst": 6, "best": [6, 22, 26], "practic": 6, "account": [6, 7, 10, 12], "buildsolvermodel": [6, 9, 31], "callsolv": [6, 9, 31], "solutionstatu": 6, "findsolutionvalu": [6, 9, 31], "solvermodel": [6, 9, 31], "pointer": [6, 10, 31], "gurobipi": 6, "gurobi": [6, 13, 18, 20, 22, 26, 31], "permit": [6, 9, 12, 13, 27], "consist": 6, "minimalist": 7, "guid": [7, 9, 15, 17, 18], "setup": [7, 9, 20], "pr": [7, 10], "quick": 7, "repo": 7, "lint": 7, "doc": [7, 18, 31], "accur": 7, "submit": [7, 10], "top": [7, 17, 31], "git": [7, 18], "plain": 7, "feel": 7, "free": [7, 11, 20, 30], "client": [7, 22], "download": [7, 10, 17, 18, 20], "replac": [7, 11], "pchtsp": [7, 15, 26, 27], "usernam": 7, "That": 7, "wil": 7, "insid": [7, 9, 10, 17, 18, 30], "virtual": [7, 18], "environ": [7, 14, 18], "linux": [7, 9, 18, 31], "mac": [7, 9], "window": [7, 9, 18], "cd": [7, 9, 18, 20], "python3": [7, 9], "venv": 7, "bin": [7, 9], "activ": [7, 14], "pip": [7, 18], "dev": [7, 18, 31], "develop": [7, 15], "link": [7, 15, 17], "version": [7, 9, 10, 13, 18, 20, 26, 31], "run_test": 7, "detect": 7, "ones": [7, 27], "issu": [7, 12, 14, 18], "repositori": 7, "style": 7, "quickest": 7, "And": [7, 10, 12, 17, 31], "easiest": [7, 18, 20], "id": 7, "learn": [7, 15, 17], "sphinx": [7, 18], "restructuredtext": 7, "html": [7, 18, 27, 31], "home": [7, 15, 18, 19, 31], "browser": [7, 18], "rebuild": 7, "re": [7, 9, 10, 12, 20], "commit": 7, "push": [7, 20], "some_modified_fil": 7, "messag": [7, 10, 13], "fork": 8, "clone": 8, "project": [8, 10, 22], "black": 8, "linter": 8, "formatt": 8, "document": [8, 9, 10, 15, 19], "pull": [8, 18], "inherit": 8, "actualsolv": [8, 30, 31], "defaultpath": [8, 31], "suit": [8, 31], "offici": [8, 14], "api": [8, 14, 15, 29], "typic": [9, 22], "pc": [9, 10], "concept": [9, 15, 19], "question": [9, 10], "helper": [9, 27, 30], "queri": 9, "pl": 9, "solver_list": 9, "listsolv": [9, 31], "glpk_cmd": [9, 20, 31], "pyglpk": [9, 20, 31], "cplex_cmd": [9, 13, 20, 31], "cplex_dll": [9, 20], "gurobi_cmd": [9, 13, 20, 31], "mosek": [9, 18, 31], "xpress": [9, 13, 18, 20, 31], "pulp_cbc_cmd": [9, 10, 13, 20, 31], "coin_cmd": [9, 20, 31], "coinmp_dll": [9, 20, 31], "choco_cmd": [9, 31], "scip_cmd": [9, 31], "onlyavail": [9, 31], "current": [9, 17, 20, 21, 31], "constructor": 9, "getsolv": [9, 31], "sake": 9, "session": [9, 10], "applic": 9, "But": [9, 12], "knew": 9, "hard": [9, 22, 30], "drive": [9, 20], "match": [9, 15, 24], "trace": 9, "fairli": 9, "cross": 9, "platform": [9, 31], "among": 9, "interfac": [9, 12, 15, 29], "summar": 9, "group": [9, 14, 17], "librari": [9, 20, 31], "most": [9, 14, 15, 21, 26], "former": 9, "latter": 9, "via": [9, 10, 13, 18, 21, 22, 31], "happen": 9, "idea": 9, "both": [9, 12, 17], "mine": 9, "ibm": 9, "ilog": 9, "cplex_studio128": 9, "x64_win64": 9, "ex": [9, 14, 18], "imagin": [9, 12], "path_to_cplex": 9, "_var": 9, "_var2": 9, "absolut": [9, 31], "cumbersom": 9, "random": [9, 31], "correctli": [9, 10, 13, 20], "forget": 9, "until": [9, 17], "someth": [9, 10, 28], "magic": 9, "enough": [9, 12], "dynam": [9, 31], "deploi": 9, "_cmd": 9, "whatev": 9, "reason": [9, 12, 21], "safe": 9, "sorri": 9, "procedur": 9, "explicit": [9, 17, 22], "my": 9, "adapt": [9, 13], "bashrc": 9, "ve": [9, 13, 30], "gui": [9, 20], "profil": 9, "bash": 9, "cplex_hom": 9, "opt": 9, "cpo_hom": 9, "cpoptim": 9, "x86": 9, "64_linux": 9, "ld_library_path": 9, "pythonpath": 9, "gurobi_hom": 9, "gurobi801": 9, "linux64": 9, "lib": 9, "plenti": 9, "By": [9, 20, 22], "keep": 9, "intermediari": 9, "mst": 9, "temp": 9, "tmp": [9, 31], "tmpdir": [9, 31], "With": [9, 17], "manual": 9, "put_some_alternative_path_her": 9, "xpress_pi": [9, 13, 31], "high": [9, 10, 18, 31], "scip": [9, 18, 31], "scip_pi": [9, 31], "copt": [9, 31], "offer": [9, 12], "seri": 9, "faster": 9, "involv": [9, 10, 22], "disk": 9, "lot": [9, 12, 21], "extrem": 9, "rai": 9, "dual": [9, 20, 21], "work": [9, 10, 12, 13, 17, 20, 22, 31], "automat": [9, 12], "recomend": 9, "python_path": 9, "admin": 9, "sudo": [9, 18, 20], "load": [9, 13, 20, 23, 31], "mip_start": [9, 31], "some_mst_fil": 9, "backup": 9, "json": [9, 14, 30, 31], "solver_dict": 9, "todict": [9, 30, 31], "quit": 9, "warmstart": [9, 13, 30, 31], "tojson": [9, 30, 31], "some_file_nam": 9, "getsolverfromdict": [9, 31], "Or": [9, 12], "getsolverfromjson": [9, 31], "ujson": [9, 12], "fast": [9, 12, 17], "advic": 10, "year": 10, "answer": 10, "discuss": [10, 18], "coin": [10, 18, 22, 31], "stack": 10, "overflow": 10, "tag": 10, "stackoverflow": 10, "Of": 10, "site": [10, 20, 23, 25, 26, 27], "suffici": 10, "understand": [10, 17, 22], "old": 10, "highli": [10, 17], "recommend": [10, 15, 18], "common": 10, "nonetheless": 10, "reproduc": 10, "video": 10, "aim": [10, 22], "languag": [10, 19, 20], "share": [10, 31], "export": [10, 14, 15, 18, 30, 31], "pypi": [10, 18], "12": [10, 17, 31], "complet": [10, 12, 13], "path_to_cbc": 10, "precis": 10, "never": [10, 22, 25], "100000000000": 10, "special": [10, 25], "1200": 10, "09123642123": 10, "decim": 10, "round": [10, 17, 30, 31], "coeffici": [10, 12, 22, 30], "memori": [10, 31], "python32": 10, "python64": 10, "32": [10, 20], "bit": [10, 20], "even": [10, 31], "64": [10, 20, 31], "mpsfile": 10, "recent": 10, "slack": [10, 20, 31], "post": 10, "built": [10, 18], "log": [10, 15, 24, 31], "regard": 10, "logpath": [10, 31], "support": [10, 14, 17, 23, 25, 26, 30, 31], "bring": 10, "appar": 10, "access": [10, 14, 17, 18, 20], "imposs": 10, "permiss": 10, "launch": 10, "410": 10, "384": 10, "elastic": [11, 30], "denot": [11, 17], "interv": 11, "instanti": [11, 31], "subclass": 11, "lpconstraint": [11, 18, 25, 28, 30], "target": [11, 30], "makeelasticsubproblem": [11, 30], "fixedelasticsubproblem": [11, 30], "rh": [11, 30], "elasticproblem": 11, "penalty_valu": 11, "proportionfreebound": [11, 30], "freebound_valu": 11, "proportionfreeboundlist": [11, 30], "freebound_list_valu": 11, "real": [11, 17, 21], "symmetr": 11, "proport": [11, 30], "asymmetr": 11, "point": [11, 21, 22, 31], "magnitud": 11, "assess": 11, "examin": [11, 22], "constraint_1": 11, "ex_1": 11, "elasticproblem_1": 11, "01": 11, "constraint_2": 11, "ex_2": 11, "elasticproblem_2": 11, "02": 11, "05": [11, 30], "side": [11, 30], "too": [12, 22], "industri": [12, 22], "flexibl": 12, "fit": [12, 30], "lose": [12, 27], "restor": 12, "identifi": [12, 17, 22, 30], "shadow": [12, 30], "test_export_dict_mip": 12, "y": [12, 18, 25, 30], "obj": [12, 28, 30], "c1": 12, "c2": 12, "c3": 12, "to_dict": [12, 30, 31], "pi": 12, "sol_statu": [12, 31], "sos1": 12, "sos2": 12, "dj": [12, 30], "var1": 12, "prob1": 12, "from_dict": [12, 30], "TO": 12, "size": [12, 21], "frommp": 12, "wedding_seating_model": 12, "to_json": [12, 31], "wedding_var": 12, "wedding_model": 12, "from_json": 12, "inspect": 12, "table_": 12, "_": 12, "longer": [12, 17, 20], "unfortun": 12, "flat": [12, 27], "concaten": 12, "mention": 12, "nevertheless": 12, "strict": 12, "clever": 12, "pars": 12, "reconstruct": 12, "modul": [12, 17, 20, 31], "transform": [12, 27], "np": 12, "custom": 12, "encod": 12, "npencod": 12, "jsonencod": 12, "isinst": 12, "int": [12, 17, 30, 31], "elif": [12, 17], "float": [12, 17, 30, 31], "ndarrai": 12, "tolist": 12, "super": 12, "cl": 12, "cast": 12, "valid": [13, 22], "parcial": 13, "gain": 13, "cbc_cmd": 13, "cplex_pi": [13, 20, 31], "afterward": 13, "yet": 13, "setinitialvalu": [13, 30], "reus": 13, "confirm": 13, "fixvalu": [13, 30], "_variabl": 13, "upperbound": 13, "click": [13, 20], "franco": [13, 15], "peschiera": [13, 15], "temporari": [14, 31], "warm": [14, 15, 31], "elast": [14, 15, 20, 30], "caveat": 14, "panda": [14, 26, 27], "numpi": [14, 15, 24], "debug": [14, 15, 31], "feedback": [14, 22], "ask": [14, 22], "cbc": [14, 18, 20, 26, 31], "jupyt": 14, "notebook": 14, "anaconda": 14, "conda": 14, "content": [15, 17, 26], "process": [15, 19, 21], "introduct": 15, "instruct": [15, 18, 20], "earlier": 15, "relev": [15, 17, 22, 30], "topic": 15, "basic": [15, 19], "ampli": [15, 19, 24], "readm": [15, 19], "plugin": 15, "orlog": [15, 24], "OR": [15, 18, 24], "parser": [15, 24, 31], "pytup": [15, 24], "smart": [15, 24], "ampl": [15, 24], "manipul": [15, 20, 24, 27], "pulp_lparrai": [15, 24], "heaven": [15, 24], "team": 15, "auckland": 15, "ac": 15, "nz": 15, "anita": 15, "kean": 15, "andrew": 15, "mason": 15, "michael": 15, "move": [16, 17], "willu47": [16, 23], "excel": [17, 22], "internet": 17, "freeli": [17, 20], "book": 17, "dive": 17, "Into": 17, "host": 17, "beginn": 17, "websit": 17, "beginnersguid": 17, "nonprogramm": 17, "fundament": 17, "principl": 17, "mainli": 17, "focu": 17, "prompt": [17, 20], "sequenc": 17, "indent": 17, "govern": 17, "colon": 17, "observ": [17, 22], "bottom": 17, "demonstr": 17, "ingredientslist": 17, "water": 17, "jelli": 17, "No": [17, 28, 31], "condit": [17, 21], "told": 17, "eventu": 17, "iter": [17, 30], "testlist": 17, "togeth": 17, "stop": [17, 31], "creation": 17, "pt": 17, "14": 17, "wherebi": 17, "consecut": 17, "unlik": 17, "curli": 17, "game": 17, "dimens": 17, "lamb": 17, "under": [17, 22, 25], "parenthes": 17, "concis": [17, 22], "odd": 17, "11": 17, "13": 17, "17": 17, "19": 17, "23": [17, 26], "modulu": 17, "remaind": 17, "divis": 17, "fifth": 17, "20": [17, 31], "scratch": 17, "challeng": 17, "prime": 17, "perfect": 17, "throughout": 17, "hash": 17, "symbol": [17, 28], "intend": 17, "usabl": [17, 31], "asterisk": 17, "inputparameter1": 17, "inputparameter2": 17, "bodi": 17, "matter": 17, "keyword": [17, 25, 30, 31], "string_append": 17, "tail": 17, "end_messag": 17, "eol": 17, "newbegin": 17, "stringov": 17, "newbeginendstringov": 17, "endmessag": 17, "word": 17, "pattern": 17, "instanc": [17, 30, 31], "lengthsdict": 17, "__str__": 17, "trim": 17, "act": 17, "spongerol": 17, "trimvalu": 17, "04": 17, "totalrolllength": 17, "lenopt": 17, "length": [17, 30], "patterna": 17, "glpk": [18, 20, 31], "clp": [18, 31], "choco": [18, 31], "mipcl": [18, 31], "fscip": [18, 31], "latest": [18, 20, 31], "osx": 18, "newer": 18, "io": [18, 27], "myproblem": 18, "sovler": 18, "a1x1": 18, "a2x2": 18, "anxn": 18, "lpconstraintvar": [18, 30], "construct": [18, 22], "wise": 18, "lpdot": 18, "xn": 18, "local": 18, "termin": 18, "root": [18, 20], "bug": 18, "patch": 18, "welcom": 18, "copyright": [18, 31], "roi": 18, "2003": 18, "2005": 18, "licens": [18, 20], "arrai": [19, 31], "mathemat": [20, 21], "numer": [20, 28, 30], "extern": 20, "far": 20, "pleas": [20, 31], "python34": 20, "zipfil": 20, "suitabl": [20, 30, 31], "desktop": 20, "menu": 20, "navig": 20, "foldernam": 20, "stand": 20, "back": [20, 22], "idl": 20, "pydev": 20, "callabl": [20, 31], "debain": 20, "apt": 20, "util": 20, "academ": 20, "interpret": [20, 31], "bundl": 20, "pulptestal": 20, "subtract": [20, 30], "lpaffineexpress": [20, 25, 30], "freebound": 20, "unchang": 20, "unavail": 20, "yaposib": [20, 31], "simplest": 21, "a_1": 21, "a_2": 21, "a_3": 21, "a_n": 21, "x_n": 21, "a_i": [21, 30], "x_i": [21, 30], "revis": [21, 22], "simplex": [21, 22], "primal": 21, "interior": [21, 22], "won": 21, "almost": 21, "ident": 21, "minor": 21, "enorm": 21, "research": [21, 22], "branch": [21, 31], "grow": 21, "exponenti": 21, "broken": 22, "down": 22, "consult": 22, "person": 22, "who": 22, "invalid": 22, "alter": [22, 30], "incorpor": 22, "methodologi": 22, "translat": [22, 31], "term": [22, 30], "shortcut": 22, "popul": 22, "neat": 22, "tidi": 22, "simplif": 22, "rigour": 22, "abstract": 22, "spend": 22, "subsequ": 22, "significantli": 22, "quantifi": 22, "restrict": 22, "captur": 22, "interdepend": 22, "pai": 22, "attent": 22, "reflect": [22, 30], "rel": [22, 31], "understood": 22, "algorithm": [22, 31], "techniqu": 22, "heurist": [22, 31], "accuraci": 22, "futur": 22, "robust": 22, "variou": 22, "fail": 22, "sort": [22, 30], "tactic": 22, "strateg": 22, "invest": 22, "factori": 22, "importantli": 22, "why": 22, "crucial": 22, "stakehold": 22, "consequ": 22, "intellig": 22, "chanc": 22, "benefit": 22, "identif": 22, "opportun": 22, "syntax": 23, "hood": 25, "heavi": 25, "lift": [25, 31], "power": 25, "broadcast": 25, "reshap": 25, "trick": 25, "galor": 25, "ever": 25, "clip": 25, "boolean": 25, "wide": 25, "axi": 25, "qdbp": 25, "lparrai": 25, "unconstrain": 25, "supersudoku": 25, "puzzl": 25, "digit": 25, "coordin": 25, "distinct": 25, "ub": 25, "create_anon": 25, "board": 25, "pp": 25, "lpbinari": [25, 28], "onedigitpercel": 25, "maxoneperrow": 25, "maxonepercol": 25, "maxoneperbox": 25, "maxoneperxi": 25, "argmax": 25, "cut": [26, 31], "gap": [26, 31], "datafram": 26, "progress": 26, "ol": 26, "get_info_log_solv": 26, "gurobi700": 26, "app1": 26, "best_bound": 26, "41": 26, "best_solut": 26, "cut_info": 26, "167": 26, "97894": 26, "cliqu": 26, "gomori": [26, 31], "mir": 26, "22": 26, "first_relax": 26, "178": 26, "94318": 26, "first_solut": 26, "matrix": 26, "53467": 26, "nonzero": 26, "199175": 26, "26871": 26, "matrix_post": 26, "35616": 26, "149085": 26, "22010": 26, "526": 26, "presolv": [26, 31], "4861": 26, "17851": 26, "nodesleft": 26, "depth": 26, "cutsbestbound": 26, "itpnod": 26, "336": 26, "171": 26, "91701": 26, "319": 26, "170": 26, "97660": 26, "317": 26, "26": 26, "roottim": 26, "sol_cod": 26, "status_cod": 26, "46": 26, "superdict": 27, "tuplist": 27, "pyton": 27, "loss": 27, "chain": 27, "\u00e0": 27, "la": 27, "vice": 27, "versa": 27, "nest": 27, "ton": 27, "shorten": 27, "readabl": 27, "hopefulli": 28, "pulperror": [28, 31], "arg": [28, 30, 31], "with_traceback": 28, "tb": 28, "__traceback__": 28, "isiter": 28, "lpstatusoptim": 28, "lpstatusunbound": 28, "lpstatusundefin": 28, "lpsolut": 28, "lpsolutionoptim": 28, "lpsolutionstatusinfeas": 28, "lpsolutionstatusunbound": 28, "lpsolutionintegerfeas": 28, "lpsens": 28, "lpconstrainteq": [28, 30], "lpconstraintl": [28, 30], "lpconstraintg": [28, 30], "lpconstraintsens": 28, "lpfractionconstraint": 30, "fractionelasticsubproblem": 30, "nonam": 30, "three": 30, "kwarg": [30, 31], "roundsolut": 30, "epsint": 30, "1e": [30, 31], "ep": 30, "07": 30, "setobject": 30, "columnwis": 30, "filenam": [30, 31], "writeso": 30, "max_length": 30, "renam": 30, "with_objsens": 30, "bool": [30, 31], "classmethod": [30, 31], "fromjson": 30, "lpelement": 30, "categori": 30, "addvariabletoconstraint": 30, "indexstart": 30, "prefix": [30, 31], "part": 30, "itself": 30, "fromdict": 30, "isfix": 30, "valueerror": 30, "infti": 30, "ordereddict": 30, "initialis": [30, 31], "undetermin": 30, "equival": 30, "x_name": 30, "x_0": 30, "textsf": 30, "addinplac": 30, "ascplexlpaffineexpress": 30, "affin": 30, "ascplexvariablesonli": 30, "reset": 30, "sorted_kei": 30, "ascplexlpconstraint": 30, "changerh": 30, "_dict": 30, "subproblem": 30, "violat": 30, "alternam": 30, "anonym": 30, "deelastic": 30, "de": 30, "finddifferencefromrh": 30, "lh": 30, "findlhsvalu": 30, "isviol": 30, "reelastic": 30, "orgset": 30, "maxcardin": 30, "allpermut": 30, "static": 31, "alia": 31, "coin_mp": 31, "dll": 31, "forc": 31, "exit": 31, "epgap": 31, "toler": 31, "gaprel": 31, "gapab": 31, "coinmp_dll_load_dl": 31, "strong": 31, "thread": 31, "timemod": 31, "elaps": 31, "maxnod": 31, "knapsack": 31, "probe": 31, "count": 31, "wall": 31, "cpu": 31, "reach": 31, "getopt": 31, "get_statu": 31, "readsol_lp": 31, "reducedcost": 31, "shadowpric": 31, "readsol_mp": 31, "variablesnam": 31, "constraintsnam": 31, "objectivenam": 31, "solve_cbc": 31, "use_mp": 31, "writesol": 31, "solvervar": 31, "solverconstraint": 31, "callback": 31, "copt_cmd": 31, "logfil": 31, "param": 31, "borrow": 31, "writemst": 31, "lpvar": 31, "copt_dll": 31, "err": 31, "typeerror": 31, "byte": 31, "pathlik": 31, "nonetyp": 31, "copt_dll_loadlib": 31, "maxmemori": 31, "bind": 31, "wrap": 31, "against": 31, "modulenotfounderror": 31, "fscip_cmd": 31, "multi": 31, "fiberscip": 31, "fscip_status": 31, "no_solution_status": 31, "parse_object": 31, "parse_statu": 31, "parse_vari": 31, "env": 31, "highs_cmd": 31, "juliabinarywrapp": 31, "highs_jll": 31, "jl": 31, "releas": 31, "compil": 31, "solution_styl": 31, "actualresolv": 31, "getcplexstylearrai": 31, "sensedict": 31, "lpvarcategori": 31, "lpobjsens": 31, "infbound": 31, "cdll": 31, "settmpdir": 31, "reasonn": 31, "silent_remov": 31, "precompil": 31, "pulp_cbc_path": 31, "runner": 31, "solverdir": 31, "christoph": 31, "mari": 31, "duquesn": 31, "2012": 31, "configpars": 31, "scip_status": 31, "restart": 31, "stall": 31, "interrupt": 31, "heurfreq": 31, "heurstra": 31, "covercut": 31, "frequenc": 31, "tree": 31, "search": 31, "strategi": 31, "inequ": 31, "nodeselect": 31, "heurdepth": 31, "www": 31, "fico": 31, "chapter7": 31, "quote_path": 31, "quot": 31, "doubl": 31, "escap": 31, "charact": 31, "tcl": 31, "shell": 31, "attrfil": 31, "writeslxsol": 31, "slx": 31, "solutionn": 31, "xpress_cmd": 31, "prepar": 31, "tweak": 31, "low": 31, "getattribut": 31, "osi": 31, "byref": 31, "offset": 31, "lookalik": 31, "clock": 31, "monoton": 31, "backward": 31, "configsolv": 31, "design": 31, "coptstr": 31, "ctypesarrayfil": 31, "mylist": 31, "ctype": 31, "c_doubl": 31, "operating_system": 31, "arch": 31, "mktemp": 31, "suffix": 31, "dir": 31, "mkstemp": 31, "accept": 31, "unsaf": 31, "AND": 31, "NOT": 31, "BE": 31, "around": 31, "beaten": 31, "punch": 31, "setconfiginform": 31, "moment": 31, "to_str": 31, "_obj": 31, "uuid4": 31, "uuid": 31}, "objects": {"": [[30, 0, 0, "-", "pulp"]], "pulp": [[30, 1, 1, "", "FixedElasticSubProblem"], [30, 1, 1, "", "LpAffineExpression"], [30, 1, 1, "", "LpConstraint"], [30, 1, 1, "", "LpElement"], [30, 1, 1, "", "LpProblem"], [30, 1, 1, "", "LpVariable"], [30, 4, 1, "", "allcombinations"], [30, 4, 1, "", "allpermutations"], [31, 0, 0, "-", "apis"], [30, 4, 1, "", "combination"], [28, 0, 0, "-", "constants"], [30, 4, 1, "", "lpSum"], [30, 4, 1, "", "permutation"], [30, 4, 1, "", "value"]], "pulp.FixedElasticSubProblem": [[30, 2, 1, "", "alterName"], [30, 2, 1, "", "deElasticize"], [30, 2, 1, "", "findDifferenceFromRHS"], [30, 2, 1, "", "findLHSValue"], [30, 2, 1, "", "isViolated"], [30, 2, 1, "", "reElasticize"]], "pulp.LpAffineExpression": [[30, 2, 1, "", "addInPlace"], [30, 2, 1, "", "asCplexLpAffineExpression"], [30, 2, 1, "", "asCplexVariablesOnly"], [30, 2, 1, "", "copy"], [30, 2, 1, "", "sorted_keys"], [30, 2, 1, "", "toDict"], [30, 2, 1, "", "to_dict"]], "pulp.LpConstraint": [[30, 2, 1, "", "addInPlace"], [30, 2, 1, "", "asCplexLpConstraint"], [30, 2, 1, "", "changeRHS"], [30, 2, 1, "", "copy"], [30, 2, 1, "", "fromDict"], [30, 2, 1, "", "from_dict"], [30, 2, 1, "", "makeElasticSubProblem"], [30, 2, 1, "", "toDict"]], "pulp.LpProblem": [[30, 3, 1, "", "constraints"], [30, 2, 1, "", "fromJson"], [30, 3, 1, "", "objective"], [30, 2, 1, "", "roundSolution"], [30, 2, 1, "", "setObjective"], [30, 2, 1, "", "solve"], [30, 3, 1, "", "status"], [30, 2, 1, "", "toJson"], [30, 2, 1, "", "variables"], [30, 2, 1, "", "writeLP"], [30, 2, 1, "", "writeMPS"]], "pulp.LpVariable": [[30, 2, 1, "", "addVariableToConstraints"], [30, 2, 1, "", "dicts"], [30, 2, 1, "", "fixValue"], [30, 2, 1, "", "fromDict"], [30, 2, 1, "", "from_dict"], [30, 2, 1, "", "isFixed"], [30, 2, 1, "", "setInitialValue"], [30, 2, 1, "", "toDict"], [30, 2, 1, "", "to_dict"]], "pulp.apis": [[31, 1, 1, "", "CHOCO_CMD"], [31, 3, 1, "", "COIN"], [31, 1, 1, "", "COINMP_DLL"], [31, 4, 1, "", "COINMP_DLL_load_dll"], [31, 1, 1, "", "COIN_CMD"], [31, 1, 1, "", "COPT"], [31, 1, 1, "", "COPT_CMD"], [31, 1, 1, "", "COPT_DLL"], [31, 4, 1, "", "COPT_DLL_loadlib"], [31, 3, 1, "", "CPLEX"], [31, 1, 1, "", "CPLEX_CMD"], [31, 1, 1, "", "CPLEX_PY"], [31, 3, 1, "", "FSCIP"], [31, 1, 1, "", "FSCIP_CMD"], [31, 3, 1, "", "GLPK"], [31, 1, 1, "", "GLPK_CMD"], [31, 1, 1, "", "GUROBI"], [31, 1, 1, "", "GUROBI_CMD"], [31, 1, 1, "", "HiGHS"], [31, 1, 1, "", "HiGHS_CMD"], [31, 1, 1, "", "LpSolver"], [31, 1, 1, "", "LpSolver_CMD"], [31, 1, 1, "", "MIPCL_CMD"], [31, 1, 1, "", "MOSEK"], [31, 1, 1, "", "PULP_CBC_CMD"], [31, 1, 1, "", "PYGLPK"], [31, 3, 1, "", "Parser"], [31, 5, 1, "", "PulpSolverError"], [31, 3, 1, "", "SCIP"], [31, 1, 1, "", "SCIP_CMD"], [31, 1, 1, "", "SCIP_PY"], [31, 1, 1, "", "XPRESS"], [31, 3, 1, "", "XPRESS_CMD"], [31, 1, 1, "", "XPRESS_PY"], [31, 1, 1, "", "YAPOSIB"], [31, 4, 1, "", "byref"], [31, 4, 1, "", "clock"], [31, 4, 1, "", "configSolvers"], [31, 4, 1, "", "coptstr"], [31, 4, 1, "", "ctypesArrayFill"], [31, 4, 1, "", "getSolver"], [31, 4, 1, "", "getSolverFromDict"], [31, 4, 1, "", "getSolverFromJson"], [31, 4, 1, "", "initialize"], [31, 4, 1, "", "listSolvers"], [31, 4, 1, "", "mktemp"], [31, 4, 1, "", "setConfigInformation"], [31, 4, 1, "", "to_string"], [31, 4, 1, "", "uuid4"]], "pulp.apis.CHOCO_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"]], "pulp.apis.COINMP_DLL": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.COIN_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "copy"], [31, 2, 1, "", "defaultPath"], [31, 2, 1, "", "getOptions"], [31, 2, 1, "", "get_status"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol_LP"], [31, 2, 1, "", "readsol_MPS"], [31, 2, 1, "", "solve_CBC"], [31, 2, 1, "", "writesol"]], "pulp.apis.COPT": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.COPT_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"], [31, 2, 1, "", "writemst"]], "pulp.apis.COPT_DLL": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "err"], [31, 3, 1, "", "name"]], "pulp.apis.CPLEX_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 2, 1, "", "getOptions"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"], [31, 2, 1, "", "writesol"]], "pulp.apis.CPLEX_PY": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "err"], [31, 3, 1, "", "name"]], "pulp.apis.FSCIP_CMD": [[31, 3, 1, "", "FSCIP_STATUSES"], [31, 3, 1, "", "NO_SOLUTION_STATUSES"], [31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "parse_objective"], [31, 2, 1, "", "parse_status"], [31, 2, 1, "", "parse_variable"], [31, 2, 1, "", "readsol"]], "pulp.apis.GLPK_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"]], "pulp.apis.GUROBI": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "env"], [31, 3, 1, "", "name"]], "pulp.apis.GUROBI_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 2, 1, "", "getOptions"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"], [31, 2, 1, "", "writesol"]], "pulp.apis.HiGHS": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.HiGHS_CMD": [[31, 3, 1, "", "SOLUTION_STYLE"], [31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"], [31, 2, 1, "", "writesol"]], "pulp.apis.LpSolver": [[31, 2, 1, "", "actualResolve"], [31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "copy"], [31, 2, 1, "", "getCplexStyleArrays"], [31, 3, 1, "", "name"], [31, 2, 1, "", "solve"], [31, 2, 1, "", "toDict"], [31, 2, 1, "", "toJson"], [31, 2, 1, "", "to_dict"], [31, 2, 1, "", "to_json"]], "pulp.apis.LpSolver_CMD": [[31, 2, 1, "", "copy"], [31, 2, 1, "", "create_tmp_files"], [31, 2, 1, "", "defaultPath"], [31, 2, 1, "", "delete_tmp_files"], [31, 2, 1, "", "executable"], [31, 2, 1, "", "executableExtension"], [31, 3, 1, "", "name"], [31, 2, 1, "", "setTmpDir"], [31, 2, 1, "", "silent_remove"]], "pulp.apis.MIPCL_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"]], "pulp.apis.MOSEK": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.PULP_CBC_CMD": [[31, 3, 1, "", "name"], [31, 3, 1, "", "pulp_cbc_path"]], "pulp.apis.PYGLPK": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.SCIP_CMD": [[31, 3, 1, "", "NO_SOLUTION_STATUSES"], [31, 3, 1, "", "SCIP_STATUSES"], [31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"]], "pulp.apis.SCIP_PY": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.XPRESS": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "quote_path"], [31, 2, 1, "", "readsol"], [31, 2, 1, "", "writeslxsol"]], "pulp.apis.XPRESS_PY": [[31, 2, 1, "", "actualResolve"], [31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "buildSolverModel"], [31, 2, 1, "", "callSolver"], [31, 2, 1, "", "findSolutionValues"], [31, 2, 1, "", "getAttribute"], [31, 3, 1, "", "name"]], "pulp.apis.YAPOSIB": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.constants": [[28, 6, 1, "", "LpConstraintEQ"], [28, 6, 1, "", "LpConstraintGE"], [28, 6, 1, "", "LpConstraintLE"], [28, 6, 1, "", "LpConstraintSenses"], [28, 6, 1, "", "LpContinuous"], [28, 6, 1, "", "LpMaximize"], [28, 6, 1, "", "LpMinimize"], [28, 6, 1, "", "LpSenses"], [28, 6, 1, "", "LpSolution"], [28, 6, 1, "", "LpStatus"], [28, 6, 1, "", "LpStatusInfeasible"], [28, 6, 1, "", "LpStatusNotSolved"], [28, 6, 1, "", "LpStatusOptimal"], [28, 6, 1, "", "LpStatusUnbounded"], [28, 6, 1, "", "LpStatusUndefined"], [28, 5, 1, "", "PulpError"], [28, 4, 1, "", "isiterable"]], "pulp.constants.PulpError": [[28, 3, 1, "", "args"], [28, 2, 1, "", "with_traceback"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:exception", "6": "py:data"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"], "6": ["py", "data", "Python data"]}, "titleterms": {"A": [0, 1, 2, 3, 4], "blend": 0, "problem": [0, 1, 2, 3, 4, 10, 13, 22], "descript": [0, 2, 3, 22], "simplifi": 0, "formul": [0, 2, 3, 22], "identifi": [0, 2, 3], "decis": [0, 2, 3], "variabl": [0, 2, 3, 9, 12, 13, 30], "object": [0, 2, 3], "function": [0, 2, 3, 9, 17], "The": [0, 17, 22, 30], "constraint": [0, 2, 3, 11, 30], "solut": [0, 2, 3, 22], "full": 0, "set": 1, "partit": 1, "sudoku": 2, "an": [2, 9], "lp": 2, "extra": [2, 6], "expert": 2, "transport": 3, "pulp": [3, 6, 7, 9, 12, 15, 18, 20, 25, 28, 29, 30, 31], "model": [3, 12, 22], "extens": 3, "valid": 3, "storag": 3, "bui": 3, "In": 3, "present": [3, 22], "analysi": [3, 22], "ongo": 3, "monitor": 3, "two": 4, "stage": 4, "product": 4, "plan": 4, "case": 5, "studi": 5, "how": [6, 7, 9, 10, 12, 13], "add": 6, "new": 6, "solver": [6, 9, 13, 31], "exampl": [6, 12, 13, 18], "inherit": 6, "base": 6, "class": [6, 17, 30], "avail": 6, "method": 6, "actualsolv": 6, "defaultpath": 6, "make": [6, 7], "includ": 6, "test": [6, 7, 20], "suit": 6, "ad": 6, "offici": [6, 9], "api": [6, 9, 13, 31], "contribut": 7, "fork": 7, "clone": 7, "project": 7, "instal": [7, 9, 18, 20], "from": [7, 20], "sourc": [7, 20], "run": 7, "creat": 7, "appli": 7, "black": 7, "linter": 7, "formatt": 7, "build": [7, 18], "document": [7, 18, 29], "pull": 7, "request": 7, "develop": 8, "guid": [8, 14], "configur": 9, "check": 9, "which": 9, "ha": 9, "access": 9, "what": 9, "i": 9, "environ": 9, "type": [9, 12, 17], "integr": 9, "path": 9, "addit": 9, "per": 9, "cplex": 9, "gurobi": 9, "where": 9, "cmd": 9, "write": 9, "temporari": 9, "file": 9, "us": 9, "cplex_pi": 9, "specif": 9, "import": [9, 12, 17], "export": [9, 12], "debug": 10, "most": 10, "error": 10, "dure": 10, "solv": [10, 22], "give": 10, "feedback": 10, "ask": 10, "help": 10, "while": [10, 17], "try": 10, "execut": 10, "cbc": 10, "ex": 10, "infeas": 10, "jupyt": 10, "notebook": 10, "anaconda": 10, "conda": 10, "issu": 10, "elast": 11, "consider": 12, "1": 12, "json": 12, "mp": 12, "2": 12, "group": 12, "caveat": 12, "panda": 12, "numpi": [12, 25], "data": [12, 23], "warm": 13, "start": 13, "support": 13, "fill": 13, "valu": 13, "activ": 13, "mip": 13, "fix": 13, "whole": 13, "user": 14, "optim": [15, 22], "author": 15, "ampli": [16, 23], "basic": 17, "python": 17, "code": 17, "loop": 17, "statement": 17, "arrai": 17, "list": [17, 27], "tupl": [17, 27], "dictionari": [17, 27], "syntax": 17, "note": 17, "comprehens": 17, "other": 17, "languag": 17, "featur": 17, "comment": 17, "main": 19, "topic": 19, "home": 20, "pip": 20, "pypi": 20, "window": 20, "linux": 20, "your": 20, "optimis": [21, 22], "concept": 21, "linear": 21, "program": [21, 22], "integ": 21, "process": 22, "get": 22, "mathemat": 22, "perform": 22, "some": 22, "post": 22, "ampl": 23, "manipul": 23, "plugin": 24, "pulp_lparrai": 25, "x": 25, "match": 25, "made": 25, "heaven": 25, "orlog": 26, "OR": 26, "log": 26, "parser": 26, "pytup": 27, "smart": 27, "constant": 28, "intern": 29, "todo": 30, "lpproblem": 30, "express": 30, "combin": 30, "permut": 30, "interfac": 31}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"A Blending Problem": [[0, "a-blending-problem"]], "Problem Description": [[0, "problem-description"], [2, "problem-description"], [3, "problem-description"]], "Simplified Formulation": [[0, "simplified-formulation"]], "Identify the Decision Variables": [[0, "identify-the-decision-variables"], [2, "identify-the-decision-variables"], [3, "identify-the-decision-variables"]], "Formulate the Objective Function": [[0, "formulate-the-objective-function"], [2, "formulate-the-objective-function"], [3, "formulate-the-objective-function"]], "The Constraints": [[0, "the-constraints"]], "Solution to Simplified Problem": [[0, "solution-to-simplified-problem"]], "Full Formulation": [[0, "full-formulation"]], "Solution to Full Problem": [[0, "solution-to-full-problem"]], "A Set Partitioning Problem": [[1, "a-set-partitioning-problem"]], "A Sudoku Problem formulated as an LP": [[2, "a-sudoku-problem-formulated-as-an-lp"]], "Formulation": [[2, "formulation"], [3, "formulation"]], "Formulate the Constraints": [[2, "formulate-the-constraints"], [3, "formulate-the-constraints"]], "Solution": [[2, "solution"]], "Extra for Experts": [[2, "extra-for-experts"]], "A Transportation Problem": [[3, "a-transportation-problem"]], "PuLP Model": [[3, "pulp-model"]], "Extensions": [[3, "extensions"]], "Validation": [[3, "validation"]], "Storage and \u201cBuying In\u201d": [[3, "storage-and-buying-in"]], "Presentation of Solution and Analysis": [[3, "presentation-of-solution-and-analysis"]], "Ongoing Monitoring": [[3, "ongoing-monitoring"]], "A Two Stage Production Planning Problem": [[4, "a-two-stage-production-planning-problem"]], "Case Studies": [[5, "case-studies"]], "How to add a new solver to PuLP": [[6, "how-to-add-a-new-solver-to-pulp"]], "Example": [[6, "example"]], "Inheriting base classes": [[6, "inheriting-base-classes"]], "available method": [[6, "available-method"]], "actualSolve method": [[6, "actualsolve-method"]], "defaultPath method": [[6, "defaultpath-method"]], "Making the solver available to PuLP": [[6, "making-the-solver-available-to-pulp"]], "Including the solver in tests suite": [[6, "including-the-solver-in-tests-suite"]], "Extra: adding a official solver API": [[6, "extra-adding-a-official-solver-api"]], "How to contribute to PuLP": [[7, "how-to-contribute-to-pulp"]], "Forking PuLP": [[7, "forking-pulp"]], "Cloning the project": [[7, "cloning-the-project"]], "Installing from source": [[7, "installing-from-source"]], "Running tests": [[7, "running-tests"]], "Creating a test": [[7, "creating-a-test"]], "Applying the black linter / formatter": [[7, "applying-the-black-linter-formatter"]], "Building the documentation": [[7, "building-the-documentation"], [18, "building-the-documentation"]], "Making a Pull Request": [[7, "making-a-pull-request"]], "Developer Guides": [[8, "developer-guides"]], "How to configure a solver in PuLP": [[9, "how-to-configure-a-solver-in-pulp"]], "Checking which solvers PuLP has access to": [[9, "checking-which-solvers-pulp-has-access-to"]], "What is an environment variable": [[9, "what-is-an-environment-variable"]], "Types of PuLP integrations (API) to solvers": [[9, "types-of-pulp-integrations-api-to-solvers"]], "Configuring the path to the solver": [[9, "configuring-the-path-to-the-solver"]], "Additional environment variables per solver": [[9, "additional-environment-variables-per-solver"]], "CPLEX": [[9, "cplex"]], "GUROBI": [[9, "gurobi"]], "Configuring where the CMD solvers write their temporary files": [[9, "configuring-where-the-cmd-solvers-write-their-temporary-files"]], "Using the official solver API": [[9, "using-the-official-solver-api"]], "Installing CPLEX_PY": [[9, "installing-cplex-py"]], "Installing GUROBI": [[9, "installing-gurobi"]], "Using solver-specific functionality": [[9, "using-solver-specific-functionality"]], "Importing and exporting a solver": [[9, "importing-and-exporting-a-solver"]], "How to debug most errors during solving": [[10, "how-to-debug-most-errors-during-solving"]], "Giving feedback and asking for help": [[10, "giving-feedback-and-asking-for-help"]], "Error while trying to execute cbc.exe": [[10, "error-while-trying-to-execute-cbc-exe"]], "Infeasible problems": [[10, "infeasible-problems"]], "Jupyter notebooks / anaconda / conda issues": [[10, "jupyter-notebooks-anaconda-conda-issues"]], "Elastic Constraints": [[11, "elastic-constraints"]], "How to import and export models in PuLP": [[12, "how-to-import-and-export-models-in-pulp"]], "Considerations": [[12, "considerations"]], "Example 1: json": [[12, "example-1-json"]], "Example 1: mps": [[12, "example-1-mps"]], "Example 2: json": [[12, "example-2-json"]], "Grouping variables": [[12, "grouping-variables"]], "Caveats with json and pandas / numpy data types": [[12, "caveats-with-json-and-pandas-numpy-data-types"]], "How to warm-start a solver": [[13, "how-to-warm-start-a-solver"]], "Supported solver APIs": [[13, "supported-solver-apis"]], "Example problem": [[13, "example-problem"]], "Filling a variable with a value": [[13, "filling-a-variable-with-a-value"]], "Activating MIP start": [[13, "activating-mip-start"]], "Fixing a variable": [[13, "fixing-a-variable"]], "Whole Example": [[13, "whole-example"]], "User Guides": [[14, "user-guides"]], "Optimization with PuLP": [[15, "optimization-with-pulp"]], "Authors": [[15, "authors"]], "Amply": [[16, "amply"]], "Basic Python Coding": [[17, "basic-python-coding"]], "Loops in Python": [[17, "loops-in-python"]], "for Loop": [[17, "for-loop"]], "while Loop": [[17, "while-loop"]], "The if statement": [[17, "the-if-statement"]], "Array types in python": [[17, "array-types-in-python"]], "Lists": [[17, "lists"]], "Tuples": [[17, "tuples"]], "Dictionaries": [[17, "dictionaries"]], "List/Tuple/Dictionary Syntax Note": [[17, "list-tuple-dictionary-syntax-note"]], "List Comprehensions": [[17, "list-comprehensions"]], "Other important language features": [[17, "other-important-language-features"]], "Commenting in Python": [[17, "commenting-in-python"]], "Import Statement": [[17, "import-statement"]], "Functions": [[17, "functions"]], "Classes": [[17, "classes"]], "pulp": [[18, "pulp"]], "Installation": [[18, "installation"], [20, "id1"]], "Examples": [[18, "examples"]], "Documentation": [[18, "documentation"]], "Main Topics": [[19, "main-topics"]], "Installing PuLP at Home": [[20, "installing-pulp-at-home"]], "Pip and pypi installation": [[20, "pip-and-pypi-installation"]], "Windows installation from source": [[20, "windows-installation-from-source"]], "Linux Installation": [[20, "linux-installation"]], "Testing your PuLP installation": [[20, "testing-your-pulp-installation"]], "Optimisation Concepts": [[21, "optimisation-concepts"]], "Linear Programing": [[21, "linear-programing"]], "Integer Programing": [[21, "integer-programing"]], "The Optimisation Process": [[22, "the-optimisation-process"]], "The Modeling Process": [[22, "the-modeling-process"]], "Getting the Problem Description": [[22, "getting-the-problem-description"]], "Formulating the mathematical program": [[22, "formulating-the-mathematical-program"]], "Solving the mathematical program": [[22, "solving-the-mathematical-program"]], "Performing some post-optimal analysis": [[22, "performing-some-post-optimal-analysis"]], "Presenting the solution and analysis": [[22, "presenting-the-solution-and-analysis"]], "amply: AMPL data manipulation": [[23, "amply-ampl-data-manipulation"]], "Plugins": [[24, "plugins"]], "PuLP_LPARRAY: PuLP x NumPy, a match made in heaven": [[25, "pulp-lparray-pulp-x-numpy-a-match-made-in-heaven"]], "orloge: OR logs parser": [[26, "orloge-or-logs-parser"]], "pytups: smart dictionaries and tuple lists": [[27, "pytups-smart-dictionaries-and-tuple-lists"]], "pulp.constants": [[28, "module-pulp.constants"]], "PuLP Internal Documentation": [[29, "pulp-internal-documentation"]], "pulp: Pulp classes": [[30, "module-pulp"]], "Todo": [[30, "id1"]], "The LpProblem Class": [[30, "the-lpproblem-class"]], "Variables and Expressions": [[30, "variables-and-expressions"]], "Constraints": [[30, "constraints"]], "Combinations and Permutations": [[30, "combinations-and-permutations"]], "pulp.apis Interface to Solvers": [[31, "module-pulp.apis"]]}, "indexentries": {"lpconstrainteq (in module pulp.constants)": [[28, "pulp.constants.LpConstraintEQ"]], "lpconstraintge (in module pulp.constants)": [[28, "pulp.constants.LpConstraintGE"]], "lpconstraintle (in module pulp.constants)": [[28, "pulp.constants.LpConstraintLE"]], "lpconstraintsenses (in module pulp.constants)": [[28, "pulp.constants.LpConstraintSenses"]], "lpcontinuous (in module pulp.constants)": [[28, "pulp.constants.LpContinuous"]], "lpmaximize (in module pulp.constants)": [[28, "pulp.constants.LpMaximize"]], "lpminimize (in module pulp.constants)": [[28, "pulp.constants.LpMinimize"]], "lpsenses (in module pulp.constants)": [[28, "pulp.constants.LpSenses"]], "lpsolution (in module pulp.constants)": [[28, "pulp.constants.LpSolution"]], "lpstatus (in module pulp.constants)": [[28, "pulp.constants.LpStatus"]], "lpstatusinfeasible (in module pulp.constants)": [[28, "pulp.constants.LpStatusInfeasible"]], "lpstatusnotsolved (in module pulp.constants)": [[28, "pulp.constants.LpStatusNotSolved"]], "lpstatusoptimal (in module pulp.constants)": [[28, "pulp.constants.LpStatusOptimal"]], "lpstatusunbounded (in module pulp.constants)": [[28, "pulp.constants.LpStatusUnbounded"]], "lpstatusundefined (in module pulp.constants)": [[28, "pulp.constants.LpStatusUndefined"]], "pulperror": [[28, "pulp.constants.PulpError"]], "args (pulp.constants.pulperror attribute)": [[28, "pulp.constants.PulpError.args"]], "isiterable() (in module pulp.constants)": [[28, "pulp.constants.isiterable"]], "module": [[28, "module-pulp.constants"], [30, "module-pulp"], [31, "module-pulp.apis"]], "pulp.constants": [[28, "module-pulp.constants"]], "with_traceback() (pulp.constants.pulperror method)": [[28, "pulp.constants.PulpError.with_traceback"]], "fixedelasticsubproblem (class in pulp)": [[30, "pulp.FixedElasticSubProblem"]], "lpaffineexpression (class in pulp)": [[30, "pulp.LpAffineExpression"]], "lpconstraint (class in pulp)": [[30, "pulp.LpConstraint"]], "lpelement (class in pulp)": [[30, "pulp.LpElement"]], "lpproblem (class in pulp)": [[30, "pulp.LpProblem"]], "lpvariable (class in pulp)": [[30, "pulp.LpVariable"]], "addinplace() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.addInPlace"]], "addinplace() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.addInPlace"]], "addvariabletoconstraints() (pulp.lpvariable method)": [[30, "pulp.LpVariable.addVariableToConstraints"]], "allcombinations() (in module pulp)": [[30, "pulp.allcombinations"]], "allpermutations() (in module pulp)": [[30, "pulp.allpermutations"]], "altername() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.alterName"]], "ascplexlpaffineexpression() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.asCplexLpAffineExpression"]], "ascplexlpconstraint() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.asCplexLpConstraint"]], "ascplexvariablesonly() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.asCplexVariablesOnly"]], "changerhs() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.changeRHS"]], "combination() (in module pulp)": [[30, "pulp.combination"]], "constraints (pulp.lpproblem attribute)": [[30, "pulp.LpProblem.constraints"]], "copy() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.copy"]], "copy() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.copy"]], "deelasticize() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.deElasticize"]], "dicts() (pulp.lpvariable class method)": [[30, "pulp.LpVariable.dicts"]], "finddifferencefromrhs() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.findDifferenceFromRHS"]], "findlhsvalue() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.findLHSValue"]], "fixvalue() (pulp.lpvariable method)": [[30, "pulp.LpVariable.fixValue"]], "fromdict() (pulp.lpconstraint class method)": [[30, "pulp.LpConstraint.fromDict"]], "fromdict() (pulp.lpvariable class method)": [[30, "pulp.LpVariable.fromDict"]], "fromjson() (pulp.lpproblem class method)": [[30, "pulp.LpProblem.fromJson"]], "from_dict() (pulp.lpconstraint class method)": [[30, "pulp.LpConstraint.from_dict"]], "from_dict() (pulp.lpvariable class method)": [[30, "pulp.LpVariable.from_dict"]], "isfixed() (pulp.lpvariable method)": [[30, "pulp.LpVariable.isFixed"]], "isviolated() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.isViolated"]], "lpsum() (in module pulp)": [[30, "pulp.lpSum"]], "makeelasticsubproblem() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.makeElasticSubProblem"]], "objective (pulp.lpproblem attribute)": [[30, "pulp.LpProblem.objective"]], "permutation() (in module pulp)": [[30, "pulp.permutation"]], "pulp": [[30, "module-pulp"]], "reelasticize() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.reElasticize"]], "roundsolution() (pulp.lpproblem method)": [[30, "pulp.LpProblem.roundSolution"]], "setinitialvalue() (pulp.lpvariable method)": [[30, "pulp.LpVariable.setInitialValue"]], "setobjective() (pulp.lpproblem method)": [[30, "pulp.LpProblem.setObjective"]], "solve() (pulp.lpproblem method)": [[30, "pulp.LpProblem.solve"]], "sorted_keys() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.sorted_keys"]], "status (pulp.lpproblem attribute)": [[30, "pulp.LpProblem.status"]], "todict() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.toDict"]], "todict() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.toDict"]], "todict() (pulp.lpvariable method)": [[30, "pulp.LpVariable.toDict"]], "tojson() (pulp.lpproblem method)": [[30, "pulp.LpProblem.toJson"]], "to_dict() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.to_dict"]], "to_dict() (pulp.lpvariable method)": [[30, "pulp.LpVariable.to_dict"]], "value() (in module pulp)": [[30, "pulp.value"]], "variables() (pulp.lpproblem method)": [[30, "pulp.LpProblem.variables"]], "writelp() (pulp.lpproblem method)": [[30, "pulp.LpProblem.writeLP"]], "writemps() (pulp.lpproblem method)": [[30, "pulp.LpProblem.writeMPS"]], "choco_cmd (class in pulp.apis)": [[31, "pulp.apis.CHOCO_CMD"]], "coin (in module pulp.apis)": [[31, "pulp.apis.COIN"]], "coinmp_dll (class in pulp.apis)": [[31, "pulp.apis.COINMP_DLL"]], "coinmp_dll_load_dll() (in module pulp.apis)": [[31, "pulp.apis.COINMP_DLL_load_dll"]], "coin_cmd (class in pulp.apis)": [[31, "pulp.apis.COIN_CMD"]], "copt (class in pulp.apis)": [[31, "pulp.apis.COPT"]], "copt_cmd (class in pulp.apis)": [[31, "pulp.apis.COPT_CMD"]], "copt_dll (class in pulp.apis)": [[31, "pulp.apis.COPT_DLL"]], "copt_dll_loadlib() (in module pulp.apis)": [[31, "pulp.apis.COPT_DLL_loadlib"]], "cplex (in module pulp.apis)": [[31, "pulp.apis.CPLEX"]], "cplex_cmd (class in pulp.apis)": [[31, "pulp.apis.CPLEX_CMD"]], "cplex_py (class in pulp.apis)": [[31, "pulp.apis.CPLEX_PY"]], "fscip (in module pulp.apis)": [[31, "pulp.apis.FSCIP"]], "fscip_cmd (class in pulp.apis)": [[31, "pulp.apis.FSCIP_CMD"]], "fscip_statuses (pulp.apis.fscip_cmd attribute)": [[31, "pulp.apis.FSCIP_CMD.FSCIP_STATUSES"]], "glpk (in module pulp.apis)": [[31, "pulp.apis.GLPK"]], "glpk_cmd (class in pulp.apis)": [[31, "pulp.apis.GLPK_CMD"]], "gurobi (class in pulp.apis)": [[31, "pulp.apis.GUROBI"]], "gurobi_cmd (class in pulp.apis)": [[31, "pulp.apis.GUROBI_CMD"]], "highs (class in pulp.apis)": [[31, "pulp.apis.HiGHS"]], "highs_cmd (class in pulp.apis)": [[31, "pulp.apis.HiGHS_CMD"]], "lpsolver (class in pulp.apis)": [[31, "pulp.apis.LpSolver"]], "lpsolver_cmd (class in pulp.apis)": [[31, "pulp.apis.LpSolver_CMD"]], "mipcl_cmd (class in pulp.apis)": [[31, "pulp.apis.MIPCL_CMD"]], "mosek (class in pulp.apis)": [[31, "pulp.apis.MOSEK"]], "no_solution_statuses (pulp.apis.fscip_cmd attribute)": [[31, "pulp.apis.FSCIP_CMD.NO_SOLUTION_STATUSES"]], "no_solution_statuses (pulp.apis.scip_cmd attribute)": [[31, "pulp.apis.SCIP_CMD.NO_SOLUTION_STATUSES"]], "pulp_cbc_cmd (class in pulp.apis)": [[31, "pulp.apis.PULP_CBC_CMD"]], "pyglpk (class in pulp.apis)": [[31, "pulp.apis.PYGLPK"]], "parser (in module pulp.apis)": [[31, "pulp.apis.Parser"]], "pulpsolvererror": [[31, "pulp.apis.PulpSolverError"]], "scip (in module pulp.apis)": [[31, "pulp.apis.SCIP"]], "scip_cmd (class in pulp.apis)": [[31, "pulp.apis.SCIP_CMD"]], "scip_py (class in pulp.apis)": [[31, "pulp.apis.SCIP_PY"]], "scip_statuses (pulp.apis.scip_cmd attribute)": [[31, "pulp.apis.SCIP_CMD.SCIP_STATUSES"]], "solution_style (pulp.apis.highs_cmd attribute)": [[31, "pulp.apis.HiGHS_CMD.SOLUTION_STYLE"]], "xpress (class in pulp.apis)": [[31, "pulp.apis.XPRESS"]], "xpress_cmd (in module pulp.apis)": [[31, "pulp.apis.XPRESS_CMD"]], "xpress_py (class in pulp.apis)": [[31, "pulp.apis.XPRESS_PY"]], "yaposib (class in pulp.apis)": [[31, "pulp.apis.YAPOSIB"]], "actualresolve() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.actualResolve"]], "actualresolve() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.actualResolve"]], "actualsolve() (pulp.apis.choco_cmd method)": [[31, "pulp.apis.CHOCO_CMD.actualSolve"]], "actualsolve() (pulp.apis.coinmp_dll method)": [[31, "pulp.apis.COINMP_DLL.actualSolve"]], "actualsolve() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.actualSolve"]], "actualsolve() (pulp.apis.copt method)": [[31, "pulp.apis.COPT.actualSolve"]], "actualsolve() (pulp.apis.copt_cmd method)": [[31, "pulp.apis.COPT_CMD.actualSolve"]], "actualsolve() (pulp.apis.copt_dll method)": [[31, "pulp.apis.COPT_DLL.actualSolve"]], "actualsolve() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.actualSolve"]], "actualsolve() (pulp.apis.cplex_py method)": [[31, "pulp.apis.CPLEX_PY.actualSolve"]], "actualsolve() (pulp.apis.fscip_cmd method)": [[31, "pulp.apis.FSCIP_CMD.actualSolve"]], "actualsolve() (pulp.apis.glpk_cmd method)": [[31, "pulp.apis.GLPK_CMD.actualSolve"]], "actualsolve() (pulp.apis.gurobi method)": [[31, "pulp.apis.GUROBI.actualSolve"]], "actualsolve() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.actualSolve"]], "actualsolve() (pulp.apis.highs method)": [[31, "pulp.apis.HiGHS.actualSolve"]], "actualsolve() (pulp.apis.highs_cmd method)": [[31, "pulp.apis.HiGHS_CMD.actualSolve"]], "actualsolve() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.actualSolve"]], "actualsolve() (pulp.apis.mipcl_cmd method)": [[31, "pulp.apis.MIPCL_CMD.actualSolve"]], "actualsolve() (pulp.apis.mosek method)": [[31, "pulp.apis.MOSEK.actualSolve"]], "actualsolve() (pulp.apis.pyglpk method)": [[31, "pulp.apis.PYGLPK.actualSolve"]], "actualsolve() (pulp.apis.scip_cmd method)": [[31, "pulp.apis.SCIP_CMD.actualSolve"]], "actualsolve() (pulp.apis.scip_py method)": [[31, "pulp.apis.SCIP_PY.actualSolve"]], "actualsolve() (pulp.apis.xpress method)": [[31, "pulp.apis.XPRESS.actualSolve"]], "actualsolve() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.actualSolve"]], "actualsolve() (pulp.apis.yaposib method)": [[31, "pulp.apis.YAPOSIB.actualSolve"]], "available() (pulp.apis.choco_cmd method)": [[31, "pulp.apis.CHOCO_CMD.available"]], "available() (pulp.apis.coinmp_dll class method)": [[31, "pulp.apis.COINMP_DLL.available"]], "available() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.available"]], "available() (pulp.apis.copt method)": [[31, "pulp.apis.COPT.available"]], "available() (pulp.apis.copt_cmd method)": [[31, "pulp.apis.COPT_CMD.available"]], "available() (pulp.apis.copt_dll method)": [[31, "pulp.apis.COPT_DLL.available"]], "available() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.available"]], "available() (pulp.apis.cplex_py method)": [[31, "pulp.apis.CPLEX_PY.available"]], "available() (pulp.apis.fscip_cmd method)": [[31, "pulp.apis.FSCIP_CMD.available"]], "available() (pulp.apis.glpk_cmd method)": [[31, "pulp.apis.GLPK_CMD.available"]], "available() (pulp.apis.gurobi method)": [[31, "pulp.apis.GUROBI.available"]], "available() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.available"]], "available() (pulp.apis.highs method)": [[31, "pulp.apis.HiGHS.available"]], "available() (pulp.apis.highs_cmd method)": [[31, "pulp.apis.HiGHS_CMD.available"]], "available() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.available"]], "available() (pulp.apis.mipcl_cmd method)": [[31, "pulp.apis.MIPCL_CMD.available"]], "available() (pulp.apis.mosek method)": [[31, "pulp.apis.MOSEK.available"]], "available() (pulp.apis.pyglpk method)": [[31, "pulp.apis.PYGLPK.available"]], "available() (pulp.apis.scip_cmd method)": [[31, "pulp.apis.SCIP_CMD.available"]], "available() (pulp.apis.scip_py method)": [[31, "pulp.apis.SCIP_PY.available"]], "available() (pulp.apis.xpress method)": [[31, "pulp.apis.XPRESS.available"]], "available() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.available"]], "available() (pulp.apis.yaposib method)": [[31, "pulp.apis.YAPOSIB.available"]], "buildsolvermodel() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.buildSolverModel"]], "byref() (in module pulp.apis)": [[31, "pulp.apis.byref"]], "callsolver() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.callSolver"]], "clock() (in module pulp.apis)": [[31, "pulp.apis.clock"]], "configsolvers() (in module pulp.apis)": [[31, "pulp.apis.configSolvers"]], "coptstr() (in module pulp.apis)": [[31, "pulp.apis.coptstr"]], "copy() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.copy"]], "copy() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.copy"]], "copy() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.copy"]], "create_tmp_files() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.create_tmp_files"]], "ctypesarrayfill() (in module pulp.apis)": [[31, "pulp.apis.ctypesArrayFill"]], "defaultpath() (pulp.apis.choco_cmd method)": [[31, "pulp.apis.CHOCO_CMD.defaultPath"]], "defaultpath() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.defaultPath"]], "defaultpath() (pulp.apis.copt_cmd method)": [[31, "pulp.apis.COPT_CMD.defaultPath"]], "defaultpath() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.defaultPath"]], "defaultpath() (pulp.apis.fscip_cmd method)": [[31, "pulp.apis.FSCIP_CMD.defaultPath"]], "defaultpath() (pulp.apis.glpk_cmd method)": [[31, "pulp.apis.GLPK_CMD.defaultPath"]], "defaultpath() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.defaultPath"]], "defaultpath() (pulp.apis.highs_cmd method)": [[31, "pulp.apis.HiGHS_CMD.defaultPath"]], "defaultpath() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.defaultPath"]], "defaultpath() (pulp.apis.mipcl_cmd method)": [[31, "pulp.apis.MIPCL_CMD.defaultPath"]], "defaultpath() (pulp.apis.scip_cmd method)": [[31, "pulp.apis.SCIP_CMD.defaultPath"]], "defaultpath() (pulp.apis.xpress method)": [[31, "pulp.apis.XPRESS.defaultPath"]], "delete_tmp_files() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.delete_tmp_files"]], "env (pulp.apis.gurobi attribute)": [[31, "pulp.apis.GUROBI.env"]], "err (pulp.apis.copt_dll attribute)": [[31, "pulp.apis.COPT_DLL.err"]], "err (pulp.apis.cplex_py attribute)": [[31, "pulp.apis.CPLEX_PY.err"]], "executable() (pulp.apis.lpsolver_cmd static method)": [[31, "pulp.apis.LpSolver_CMD.executable"]], "executableextension() (pulp.apis.lpsolver_cmd static method)": [[31, "pulp.apis.LpSolver_CMD.executableExtension"]], "findsolutionvalues() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.findSolutionValues"]], "getattribute() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.getAttribute"]], "getcplexstylearrays() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.getCplexStyleArrays"]], "getoptions() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.getOptions"]], "getoptions() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.getOptions"]], "getoptions() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.getOptions"]], "getsolver() (in module pulp.apis)": [[31, "pulp.apis.getSolver"]], "getsolverfromdict() (in module pulp.apis)": [[31, "pulp.apis.getSolverFromDict"]], "getsolverfromjson() (in module pulp.apis)": [[31, "pulp.apis.getSolverFromJson"]], "get_status() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.get_status"]], "initialize() (in module pulp.apis)": [[31, "pulp.apis.initialize"]], "listsolvers() (in module pulp.apis)": [[31, "pulp.apis.listSolvers"]], "mktemp() (in module pulp.apis)": [[31, "pulp.apis.mktemp"]], "name (pulp.apis.choco_cmd attribute)": [[31, "pulp.apis.CHOCO_CMD.name"]], "name (pulp.apis.coinmp_dll attribute)": [[31, "pulp.apis.COINMP_DLL.name"]], "name (pulp.apis.coin_cmd attribute)": [[31, "pulp.apis.COIN_CMD.name"]], "name (pulp.apis.copt attribute)": [[31, "pulp.apis.COPT.name"]], "name (pulp.apis.copt_cmd attribute)": [[31, "pulp.apis.COPT_CMD.name"]], "name (pulp.apis.copt_dll attribute)": [[31, "pulp.apis.COPT_DLL.name"]], "name (pulp.apis.cplex_cmd attribute)": [[31, "pulp.apis.CPLEX_CMD.name"]], "name (pulp.apis.cplex_py attribute)": [[31, "pulp.apis.CPLEX_PY.name"]], "name (pulp.apis.fscip_cmd attribute)": [[31, "pulp.apis.FSCIP_CMD.name"]], "name (pulp.apis.glpk_cmd attribute)": [[31, "pulp.apis.GLPK_CMD.name"]], "name (pulp.apis.gurobi attribute)": [[31, "pulp.apis.GUROBI.name"]], "name (pulp.apis.gurobi_cmd attribute)": [[31, "pulp.apis.GUROBI_CMD.name"]], "name (pulp.apis.highs attribute)": [[31, "pulp.apis.HiGHS.name"]], "name (pulp.apis.highs_cmd attribute)": [[31, "pulp.apis.HiGHS_CMD.name"]], "name (pulp.apis.lpsolver attribute)": [[31, "pulp.apis.LpSolver.name"]], "name (pulp.apis.lpsolver_cmd attribute)": [[31, "pulp.apis.LpSolver_CMD.name"]], "name (pulp.apis.mipcl_cmd attribute)": [[31, "pulp.apis.MIPCL_CMD.name"]], "name (pulp.apis.mosek attribute)": [[31, "pulp.apis.MOSEK.name"]], "name (pulp.apis.pulp_cbc_cmd attribute)": [[31, "pulp.apis.PULP_CBC_CMD.name"]], "name (pulp.apis.pyglpk attribute)": [[31, "pulp.apis.PYGLPK.name"]], "name (pulp.apis.scip_cmd attribute)": [[31, "pulp.apis.SCIP_CMD.name"]], "name (pulp.apis.scip_py attribute)": [[31, "pulp.apis.SCIP_PY.name"]], "name (pulp.apis.xpress attribute)": [[31, "pulp.apis.XPRESS.name"]], "name (pulp.apis.xpress_py attribute)": [[31, "pulp.apis.XPRESS_PY.name"]], "name (pulp.apis.yaposib attribute)": [[31, "pulp.apis.YAPOSIB.name"]], "parse_objective() (pulp.apis.fscip_cmd static method)": [[31, "pulp.apis.FSCIP_CMD.parse_objective"]], "parse_status() (pulp.apis.fscip_cmd static method)": [[31, "pulp.apis.FSCIP_CMD.parse_status"]], "parse_variable() (pulp.apis.fscip_cmd static method)": [[31, "pulp.apis.FSCIP_CMD.parse_variable"]], "pulp.apis": [[31, "module-pulp.apis"]], "pulp_cbc_path (pulp.apis.pulp_cbc_cmd attribute)": [[31, "pulp.apis.PULP_CBC_CMD.pulp_cbc_path"]], "quote_path() (pulp.apis.xpress static method)": [[31, "pulp.apis.XPRESS.quote_path"]], "readsol() (pulp.apis.choco_cmd static method)": [[31, "pulp.apis.CHOCO_CMD.readsol"]], "readsol() (pulp.apis.copt_cmd method)": [[31, "pulp.apis.COPT_CMD.readsol"]], "readsol() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.readsol"]], "readsol() (pulp.apis.fscip_cmd static method)": [[31, "pulp.apis.FSCIP_CMD.readsol"]], "readsol() (pulp.apis.glpk_cmd method)": [[31, "pulp.apis.GLPK_CMD.readsol"]], "readsol() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.readsol"]], "readsol() (pulp.apis.highs_cmd method)": [[31, "pulp.apis.HiGHS_CMD.readsol"]], "readsol() (pulp.apis.mipcl_cmd static method)": [[31, "pulp.apis.MIPCL_CMD.readsol"]], "readsol() (pulp.apis.scip_cmd static method)": [[31, "pulp.apis.SCIP_CMD.readsol"]], "readsol() (pulp.apis.xpress static method)": [[31, "pulp.apis.XPRESS.readsol"]], "readsol_lp() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.readsol_LP"]], "readsol_mps() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.readsol_MPS"]], "setconfiginformation() (in module pulp.apis)": [[31, "pulp.apis.setConfigInformation"]], "settmpdir() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.setTmpDir"]], "silent_remove() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.silent_remove"]], "solve() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.solve"]], "solve_cbc() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.solve_CBC"]], "todict() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.toDict"]], "tojson() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.toJson"]], "to_dict() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.to_dict"]], "to_json() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.to_json"]], "to_string() (in module pulp.apis)": [[31, "pulp.apis.to_string"]], "uuid4() (in module pulp.apis)": [[31, "pulp.apis.uuid4"]], "writemst() (pulp.apis.copt_cmd method)": [[31, "pulp.apis.COPT_CMD.writemst"]], "writeslxsol() (pulp.apis.xpress method)": [[31, "pulp.apis.XPRESS.writeslxsol"]], "writesol() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.writesol"]], "writesol() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.writesol"]], "writesol() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.writesol"]], "writesol() (pulp.apis.highs_cmd method)": [[31, "pulp.apis.HiGHS_CMD.writesol"]]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"A Blending Problem": [[0, "a-blending-problem"]], "A Set Partitioning Problem": [[1, "a-set-partitioning-problem"]], "A Sudoku Problem formulated as an LP": [[2, "a-sudoku-problem-formulated-as-an-lp"]], "A Transportation Problem": [[3, "a-transportation-problem"]], "A Two Stage Production Planning Problem": [[4, "a-two-stage-production-planning-problem"]], "Activating MIP start": [[13, "activating-mip-start"]], "Additional environment variables per solver": [[9, "additional-environment-variables-per-solver"]], "Amply": [[16, "amply"]], "Applying the black linter / formatter": [[7, "applying-the-black-linter-formatter"]], "Array types in python": [[17, "array-types-in-python"]], "Authors": [[15, "authors"]], "Basic Python Coding": [[17, "basic-python-coding"]], "Building the documentation": [[7, "building-the-documentation"], [18, "building-the-documentation"]], "CPLEX": [[9, "cplex"]], "Case Studies": [[5, "case-studies"]], "Caveats with json and pandas / numpy data types": [[12, "caveats-with-json-and-pandas-numpy-data-types"]], "Checking which solvers PuLP has access to": [[9, "checking-which-solvers-pulp-has-access-to"]], "Classes": [[17, "classes"]], "Cloning the project": [[7, "cloning-the-project"]], "Combinations and Permutations": [[30, "combinations-and-permutations"]], "Commenting in Python": [[17, "commenting-in-python"]], "Configuring the path to the solver": [[9, "configuring-the-path-to-the-solver"]], "Configuring where the CMD solvers write their temporary files": [[9, "configuring-where-the-cmd-solvers-write-their-temporary-files"]], "Considerations": [[12, "considerations"]], "Constraints": [[30, "constraints"]], "Creating a test": [[7, "creating-a-test"]], "Developer Guides": [[8, "developer-guides"]], "Dictionaries": [[17, "dictionaries"]], "Documentation": [[18, "documentation"]], "Elastic Constraints": [[11, "elastic-constraints"]], "Error while trying to execute cbc.exe": [[10, "error-while-trying-to-execute-cbc-exe"]], "Example": [[6, "example"]], "Example 1: json": [[12, "example-1-json"]], "Example 1: mps": [[12, "example-1-mps"]], "Example 2: json": [[12, "example-2-json"]], "Example problem": [[13, "example-problem"]], "Examples": [[18, "examples"]], "Extensions": [[3, "extensions"]], "Extra for Experts": [[2, "extra-for-experts"]], "Extra: adding a official solver API": [[6, "extra-adding-a-official-solver-api"]], "Filling a variable with a value": [[13, "filling-a-variable-with-a-value"]], "Fixing a variable": [[13, "fixing-a-variable"]], "Forking PuLP": [[7, "forking-pulp"]], "Formulate the Constraints": [[2, "formulate-the-constraints"], [3, "formulate-the-constraints"]], "Formulate the Objective Function": [[0, "formulate-the-objective-function"], [2, "formulate-the-objective-function"], [3, "formulate-the-objective-function"]], "Formulating the mathematical program": [[22, "formulating-the-mathematical-program"]], "Formulation": [[2, "formulation"], [3, "formulation"]], "Full Formulation": [[0, "full-formulation"]], "Functions": [[17, "functions"]], "GUROBI": [[9, "gurobi"]], "Getting the Problem Description": [[22, "getting-the-problem-description"]], "Giving feedback and asking for help": [[10, "giving-feedback-and-asking-for-help"]], "Grouping variables": [[12, "grouping-variables"]], "How to add a new solver to PuLP": [[6, "how-to-add-a-new-solver-to-pulp"]], "How to configure a solver in PuLP": [[9, "how-to-configure-a-solver-in-pulp"]], "How to contribute to PuLP": [[7, "how-to-contribute-to-pulp"]], "How to debug most errors during solving": [[10, "how-to-debug-most-errors-during-solving"]], "How to import and export models in PuLP": [[12, "how-to-import-and-export-models-in-pulp"]], "How to warm-start a solver": [[13, "how-to-warm-start-a-solver"]], "Identify the Decision Variables": [[0, "identify-the-decision-variables"], [2, "identify-the-decision-variables"], [3, "identify-the-decision-variables"]], "Import Statement": [[17, "import-statement"]], "Importing and exporting a solver": [[9, "importing-and-exporting-a-solver"]], "Including the solver in tests suite": [[6, "including-the-solver-in-tests-suite"]], "Infeasible problems": [[10, "infeasible-problems"]], "Inheriting base classes": [[6, "inheriting-base-classes"]], "Installation": [[18, "installation"], [20, "id1"]], "Installing CPLEX_PY": [[9, "installing-cplex-py"]], "Installing GUROBI": [[9, "installing-gurobi"]], "Installing PuLP at Home": [[20, "installing-pulp-at-home"]], "Installing from source": [[7, "installing-from-source"]], "Integer Programing": [[21, "integer-programing"]], "Jupyter notebooks / anaconda / conda issues": [[10, "jupyter-notebooks-anaconda-conda-issues"]], "Linear Programing": [[21, "linear-programing"]], "Linux Installation": [[20, "linux-installation"]], "List Comprehensions": [[17, "list-comprehensions"]], "List/Tuple/Dictionary Syntax Note": [[17, "list-tuple-dictionary-syntax-note"]], "Lists": [[17, "lists"]], "Loops in Python": [[17, "loops-in-python"]], "Main Topics": [[19, "main-topics"]], "Making a Pull Request": [[7, "making-a-pull-request"]], "Making the solver available to PuLP": [[6, "making-the-solver-available-to-pulp"]], "Ongoing Monitoring": [[3, "ongoing-monitoring"]], "Optimisation Concepts": [[21, "optimisation-concepts"]], "Optimization with PuLP": [[15, "optimization-with-pulp"]], "Other important language features": [[17, "other-important-language-features"]], "Performing some post-optimal analysis": [[22, "performing-some-post-optimal-analysis"]], "Pip and pypi installation": [[20, "pip-and-pypi-installation"]], "Plugins": [[24, "plugins"]], "Presentation of Solution and Analysis": [[3, "presentation-of-solution-and-analysis"]], "Presenting the solution and analysis": [[22, "presenting-the-solution-and-analysis"]], "Problem Description": [[0, "problem-description"], [2, "problem-description"], [3, "problem-description"]], "PuLP Internal Documentation": [[29, "pulp-internal-documentation"]], "PuLP Model": [[3, "pulp-model"]], "PuLP_LPARRAY: PuLP x NumPy, a match made in heaven": [[25, "pulp-lparray-pulp-x-numpy-a-match-made-in-heaven"]], "Running tests": [[7, "running-tests"]], "Simplified Formulation": [[0, "simplified-formulation"]], "Solution": [[2, "solution"]], "Solution to Full Problem": [[0, "solution-to-full-problem"]], "Solution to Simplified Problem": [[0, "solution-to-simplified-problem"]], "Solving the mathematical program": [[22, "solving-the-mathematical-program"]], "Storage and \u201cBuying In\u201d": [[3, "storage-and-buying-in"]], "Supported solver APIs": [[13, "supported-solver-apis"]], "Testing your PuLP installation": [[20, "testing-your-pulp-installation"]], "The Constraints": [[0, "the-constraints"]], "The LpProblem Class": [[30, "the-lpproblem-class"]], "The Modeling Process": [[22, "the-modeling-process"]], "The Optimisation Process": [[22, "the-optimisation-process"]], "The if statement": [[17, "the-if-statement"]], "Todo": [[30, "id1"]], "Tuples": [[17, "tuples"]], "Types of PuLP integrations (API) to solvers": [[9, "types-of-pulp-integrations-api-to-solvers"]], "User Guides": [[14, "user-guides"]], "Using solver-specific functionality": [[9, "using-solver-specific-functionality"]], "Using the official solver API": [[9, "using-the-official-solver-api"]], "Validation": [[3, "validation"]], "Variables and Expressions": [[30, "variables-and-expressions"]], "What is an environment variable": [[9, "what-is-an-environment-variable"]], "Whole Example": [[13, "whole-example"]], "Windows installation from source": [[20, "windows-installation-from-source"]], "actualSolve method": [[6, "actualsolve-method"]], "amply: AMPL data manipulation": [[23, "amply-ampl-data-manipulation"]], "available method": [[6, "available-method"]], "defaultPath method": [[6, "defaultpath-method"]], "for Loop": [[17, "for-loop"]], "orloge: OR logs parser": [[26, "orloge-or-logs-parser"]], "pulp": [[18, "pulp"]], "pulp.apis Interface to Solvers": [[31, "module-pulp.apis"]], "pulp.constants": [[28, "module-pulp.constants"]], "pulp: Pulp classes": [[30, "module-pulp"]], "pytups: smart dictionaries and tuple lists": [[27, "pytups-smart-dictionaries-and-tuple-lists"]], "while Loop": [[17, "while-loop"]]}, "docnames": ["CaseStudies/a_blending_problem", "CaseStudies/a_set_partitioning_problem", "CaseStudies/a_sudoku_problem", "CaseStudies/a_transportation_problem", "CaseStudies/a_two_stage_production_planning_problem", "CaseStudies/index", "develop/add_solver", "develop/contribute", "develop/index", "guides/how_to_configure_solvers", "guides/how_to_debug", "guides/how_to_elastic_constraints", "guides/how_to_export_models", "guides/how_to_mip_start", "guides/index", "index", "main/amply", "main/basic_python_coding", "main/includeme", "main/index", "main/installing_pulp_at_home", "main/optimisation_concepts", "main/the_optimisation_process", "plugins/amply", "plugins/index", "plugins/lparray", "plugins/orloge", "plugins/pytups", "technical/constants", "technical/index", "technical/pulp", "technical/solvers"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2}, "filenames": ["CaseStudies/a_blending_problem.rst", "CaseStudies/a_set_partitioning_problem.rst", "CaseStudies/a_sudoku_problem.rst", "CaseStudies/a_transportation_problem.rst", "CaseStudies/a_two_stage_production_planning_problem.rst", "CaseStudies/index.rst", "develop/add_solver.rst", "develop/contribute.rst", "develop/index.rst", "guides/how_to_configure_solvers.rst", "guides/how_to_debug.rst", "guides/how_to_elastic_constraints.rst", "guides/how_to_export_models.rst", "guides/how_to_mip_start.rst", "guides/index.rst", "index.rst", "main/amply.rst", "main/basic_python_coding.rst", "main/includeme.rst", "main/index.rst", "main/installing_pulp_at_home.rst", "main/optimisation_concepts.rst", "main/the_optimisation_process.rst", "plugins/amply.rst", "plugins/index.rst", "plugins/lparray.rst", "plugins/orloge.rst", "plugins/pytups.rst", "technical/constants.rst", "technical/index.rst", "technical/pulp.rst", "technical/solvers.rst"], "indexentries": {"actualresolve() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.actualResolve", false]], "actualresolve() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.actualResolve", false]], "actualsolve() (pulp.apis.choco_cmd method)": [[31, "pulp.apis.CHOCO_CMD.actualSolve", false]], "actualsolve() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.actualSolve", false]], "actualsolve() (pulp.apis.coinmp_dll method)": [[31, "pulp.apis.COINMP_DLL.actualSolve", false]], "actualsolve() (pulp.apis.copt method)": [[31, "pulp.apis.COPT.actualSolve", false]], "actualsolve() (pulp.apis.copt_cmd method)": [[31, "pulp.apis.COPT_CMD.actualSolve", false]], "actualsolve() (pulp.apis.copt_dll method)": [[31, "pulp.apis.COPT_DLL.actualSolve", false]], "actualsolve() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.actualSolve", false]], "actualsolve() (pulp.apis.cplex_py method)": [[31, "pulp.apis.CPLEX_PY.actualSolve", false]], "actualsolve() (pulp.apis.fscip_cmd method)": [[31, "pulp.apis.FSCIP_CMD.actualSolve", false]], "actualsolve() (pulp.apis.glpk_cmd method)": [[31, "pulp.apis.GLPK_CMD.actualSolve", false]], "actualsolve() (pulp.apis.gurobi method)": [[31, "pulp.apis.GUROBI.actualSolve", false]], "actualsolve() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.actualSolve", false]], "actualsolve() (pulp.apis.highs method)": [[31, "pulp.apis.HiGHS.actualSolve", false]], "actualsolve() (pulp.apis.highs_cmd method)": [[31, "pulp.apis.HiGHS_CMD.actualSolve", false]], "actualsolve() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.actualSolve", false]], "actualsolve() (pulp.apis.mipcl_cmd method)": [[31, "pulp.apis.MIPCL_CMD.actualSolve", false]], "actualsolve() (pulp.apis.mosek method)": [[31, "pulp.apis.MOSEK.actualSolve", false]], "actualsolve() (pulp.apis.pyglpk method)": [[31, "pulp.apis.PYGLPK.actualSolve", false]], "actualsolve() (pulp.apis.scip_cmd method)": [[31, "pulp.apis.SCIP_CMD.actualSolve", false]], "actualsolve() (pulp.apis.scip_py method)": [[31, "pulp.apis.SCIP_PY.actualSolve", false]], "actualsolve() (pulp.apis.xpress method)": [[31, "pulp.apis.XPRESS.actualSolve", false]], "actualsolve() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.actualSolve", false]], "actualsolve() (pulp.apis.yaposib method)": [[31, "pulp.apis.YAPOSIB.actualSolve", false]], "addinplace() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.addInPlace", false]], "addinplace() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.addInPlace", false]], "addvariabletoconstraints() (pulp.lpvariable method)": [[30, "pulp.LpVariable.addVariableToConstraints", false]], "allcombinations() (in module pulp)": [[30, "pulp.allcombinations", false]], "allpermutations() (in module pulp)": [[30, "pulp.allpermutations", false]], "altername() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.alterName", false]], "args (pulp.constants.pulperror attribute)": [[28, "pulp.constants.PulpError.args", false]], "ascplexlpaffineexpression() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.asCplexLpAffineExpression", false]], "ascplexlpconstraint() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.asCplexLpConstraint", false]], "ascplexvariablesonly() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.asCplexVariablesOnly", false]], "available() (pulp.apis.choco_cmd method)": [[31, "pulp.apis.CHOCO_CMD.available", false]], "available() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.available", false]], "available() (pulp.apis.coinmp_dll class method)": [[31, "pulp.apis.COINMP_DLL.available", false]], "available() (pulp.apis.copt method)": [[31, "pulp.apis.COPT.available", false]], "available() (pulp.apis.copt_cmd method)": [[31, "pulp.apis.COPT_CMD.available", false]], "available() (pulp.apis.copt_dll method)": [[31, "pulp.apis.COPT_DLL.available", false]], "available() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.available", false]], "available() (pulp.apis.cplex_py method)": [[31, "pulp.apis.CPLEX_PY.available", false]], "available() (pulp.apis.fscip_cmd method)": [[31, "pulp.apis.FSCIP_CMD.available", false]], "available() (pulp.apis.glpk_cmd method)": [[31, "pulp.apis.GLPK_CMD.available", false]], "available() (pulp.apis.gurobi method)": [[31, "pulp.apis.GUROBI.available", false]], "available() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.available", false]], "available() (pulp.apis.highs method)": [[31, "pulp.apis.HiGHS.available", false]], "available() (pulp.apis.highs_cmd method)": [[31, "pulp.apis.HiGHS_CMD.available", false]], "available() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.available", false]], "available() (pulp.apis.mipcl_cmd method)": [[31, "pulp.apis.MIPCL_CMD.available", false]], "available() (pulp.apis.mosek method)": [[31, "pulp.apis.MOSEK.available", false]], "available() (pulp.apis.pyglpk method)": [[31, "pulp.apis.PYGLPK.available", false]], "available() (pulp.apis.scip_cmd method)": [[31, "pulp.apis.SCIP_CMD.available", false]], "available() (pulp.apis.scip_py method)": [[31, "pulp.apis.SCIP_PY.available", false]], "available() (pulp.apis.xpress method)": [[31, "pulp.apis.XPRESS.available", false]], "available() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.available", false]], "available() (pulp.apis.yaposib method)": [[31, "pulp.apis.YAPOSIB.available", false]], "buildsolvermodel() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.buildSolverModel", false]], "byref() (in module pulp.apis)": [[31, "pulp.apis.byref", false]], "callsolver() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.callSolver", false]], "changerhs() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.changeRHS", false]], "choco_cmd (class in pulp.apis)": [[31, "pulp.apis.CHOCO_CMD", false]], "clock() (in module pulp.apis)": [[31, "pulp.apis.clock", false]], "coin (in module pulp.apis)": [[31, "pulp.apis.COIN", false]], "coin_cmd (class in pulp.apis)": [[31, "pulp.apis.COIN_CMD", false]], "coinmp_dll (class in pulp.apis)": [[31, "pulp.apis.COINMP_DLL", false]], "coinmp_dll_load_dll() (in module pulp.apis)": [[31, "pulp.apis.COINMP_DLL_load_dll", false]], "combination() (in module pulp)": [[30, "pulp.combination", false]], "configsolvers() (in module pulp.apis)": [[31, "pulp.apis.configSolvers", false]], "constraints (pulp.lpproblem attribute)": [[30, "pulp.LpProblem.constraints", false]], "copt (class in pulp.apis)": [[31, "pulp.apis.COPT", false]], "copt_cmd (class in pulp.apis)": [[31, "pulp.apis.COPT_CMD", false]], "copt_dll (class in pulp.apis)": [[31, "pulp.apis.COPT_DLL", false]], "copt_dll_loadlib() (in module pulp.apis)": [[31, "pulp.apis.COPT_DLL_loadlib", false]], "coptstr() (in module pulp.apis)": [[31, "pulp.apis.coptstr", false]], "copy() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.copy", false]], "copy() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.copy", false]], "copy() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.copy", false]], "copy() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.copy", false]], "copy() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.copy", false]], "cplex (in module pulp.apis)": [[31, "pulp.apis.CPLEX", false]], "cplex_cmd (class in pulp.apis)": [[31, "pulp.apis.CPLEX_CMD", false]], "cplex_py (class in pulp.apis)": [[31, "pulp.apis.CPLEX_PY", false]], "create_tmp_files() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.create_tmp_files", false]], "ctypesarrayfill() (in module pulp.apis)": [[31, "pulp.apis.ctypesArrayFill", false]], "deelasticize() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.deElasticize", false]], "defaultpath() (pulp.apis.choco_cmd method)": [[31, "pulp.apis.CHOCO_CMD.defaultPath", false]], "defaultpath() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.defaultPath", false]], "defaultpath() (pulp.apis.copt_cmd method)": [[31, "pulp.apis.COPT_CMD.defaultPath", false]], "defaultpath() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.defaultPath", false]], "defaultpath() (pulp.apis.fscip_cmd method)": [[31, "pulp.apis.FSCIP_CMD.defaultPath", false]], "defaultpath() (pulp.apis.glpk_cmd method)": [[31, "pulp.apis.GLPK_CMD.defaultPath", false]], "defaultpath() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.defaultPath", false]], "defaultpath() (pulp.apis.highs_cmd method)": [[31, "pulp.apis.HiGHS_CMD.defaultPath", false]], "defaultpath() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.defaultPath", false]], "defaultpath() (pulp.apis.mipcl_cmd method)": [[31, "pulp.apis.MIPCL_CMD.defaultPath", false]], "defaultpath() (pulp.apis.scip_cmd method)": [[31, "pulp.apis.SCIP_CMD.defaultPath", false]], "defaultpath() (pulp.apis.xpress method)": [[31, "pulp.apis.XPRESS.defaultPath", false]], "delete_tmp_files() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.delete_tmp_files", false]], "dicts() (pulp.lpvariable class method)": [[30, "pulp.LpVariable.dicts", false]], "env (pulp.apis.gurobi attribute)": [[31, "pulp.apis.GUROBI.env", false]], "err (pulp.apis.copt_dll attribute)": [[31, "pulp.apis.COPT_DLL.err", false]], "err (pulp.apis.cplex_py attribute)": [[31, "pulp.apis.CPLEX_PY.err", false]], "executable() (pulp.apis.lpsolver_cmd static method)": [[31, "pulp.apis.LpSolver_CMD.executable", false]], "executableextension() (pulp.apis.lpsolver_cmd static method)": [[31, "pulp.apis.LpSolver_CMD.executableExtension", false]], "finddifferencefromrhs() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.findDifferenceFromRHS", false]], "findlhsvalue() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.findLHSValue", false]], "findsolutionvalues() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.findSolutionValues", false]], "fixedelasticsubproblem (class in pulp)": [[30, "pulp.FixedElasticSubProblem", false]], "fixvalue() (pulp.lpvariable method)": [[30, "pulp.LpVariable.fixValue", false]], "from_dict() (pulp.lpconstraint class method)": [[30, "pulp.LpConstraint.from_dict", false]], "from_dict() (pulp.lpvariable class method)": [[30, "pulp.LpVariable.from_dict", false]], "fromdict() (pulp.lpconstraint class method)": [[30, "pulp.LpConstraint.fromDict", false]], "fromdict() (pulp.lpvariable class method)": [[30, "pulp.LpVariable.fromDict", false]], "fromjson() (pulp.lpproblem class method)": [[30, "pulp.LpProblem.fromJson", false]], "fscip (in module pulp.apis)": [[31, "pulp.apis.FSCIP", false]], "fscip_cmd (class in pulp.apis)": [[31, "pulp.apis.FSCIP_CMD", false]], "fscip_statuses (pulp.apis.fscip_cmd attribute)": [[31, "pulp.apis.FSCIP_CMD.FSCIP_STATUSES", false]], "get_status() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.get_status", false]], "getattribute() (pulp.apis.xpress_py method)": [[31, "pulp.apis.XPRESS_PY.getAttribute", false]], "getcplexstylearrays() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.getCplexStyleArrays", false]], "getoptions() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.getOptions", false]], "getoptions() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.getOptions", false]], "getoptions() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.getOptions", false]], "getsolver() (in module pulp.apis)": [[31, "pulp.apis.getSolver", false]], "getsolverfromdict() (in module pulp.apis)": [[31, "pulp.apis.getSolverFromDict", false]], "getsolverfromjson() (in module pulp.apis)": [[31, "pulp.apis.getSolverFromJson", false]], "glpk (in module pulp.apis)": [[31, "pulp.apis.GLPK", false]], "glpk_cmd (class in pulp.apis)": [[31, "pulp.apis.GLPK_CMD", false]], "gurobi (class in pulp.apis)": [[31, "pulp.apis.GUROBI", false]], "gurobi_cmd (class in pulp.apis)": [[31, "pulp.apis.GUROBI_CMD", false]], "highs (class in pulp.apis)": [[31, "pulp.apis.HiGHS", false]], "highs_cmd (class in pulp.apis)": [[31, "pulp.apis.HiGHS_CMD", false]], "initialize() (in module pulp.apis)": [[31, "pulp.apis.initialize", false]], "isfixed() (pulp.lpvariable method)": [[30, "pulp.LpVariable.isFixed", false]], "isiterable() (in module pulp.constants)": [[28, "pulp.constants.isiterable", false]], "isviolated() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.isViolated", false]], "listsolvers() (in module pulp.apis)": [[31, "pulp.apis.listSolvers", false]], "lpaffineexpression (class in pulp)": [[30, "pulp.LpAffineExpression", false]], "lpconstraint (class in pulp)": [[30, "pulp.LpConstraint", false]], "lpconstrainteq (in module pulp.constants)": [[28, "pulp.constants.LpConstraintEQ", false]], "lpconstraintge (in module pulp.constants)": [[28, "pulp.constants.LpConstraintGE", false]], "lpconstraintle (in module pulp.constants)": [[28, "pulp.constants.LpConstraintLE", false]], "lpconstraintsenses (in module pulp.constants)": [[28, "pulp.constants.LpConstraintSenses", false]], "lpcontinuous (in module pulp.constants)": [[28, "pulp.constants.LpContinuous", false]], "lpelement (class in pulp)": [[30, "pulp.LpElement", false]], "lpmaximize (in module pulp.constants)": [[28, "pulp.constants.LpMaximize", false]], "lpminimize (in module pulp.constants)": [[28, "pulp.constants.LpMinimize", false]], "lpproblem (class in pulp)": [[30, "pulp.LpProblem", false]], "lpsenses (in module pulp.constants)": [[28, "pulp.constants.LpSenses", false]], "lpsolution (in module pulp.constants)": [[28, "pulp.constants.LpSolution", false]], "lpsolver (class in pulp.apis)": [[31, "pulp.apis.LpSolver", false]], "lpsolver_cmd (class in pulp.apis)": [[31, "pulp.apis.LpSolver_CMD", false]], "lpstatus (in module pulp.constants)": [[28, "pulp.constants.LpStatus", false]], "lpstatusinfeasible (in module pulp.constants)": [[28, "pulp.constants.LpStatusInfeasible", false]], "lpstatusnotsolved (in module pulp.constants)": [[28, "pulp.constants.LpStatusNotSolved", false]], "lpstatusoptimal (in module pulp.constants)": [[28, "pulp.constants.LpStatusOptimal", false]], "lpstatusunbounded (in module pulp.constants)": [[28, "pulp.constants.LpStatusUnbounded", false]], "lpstatusundefined (in module pulp.constants)": [[28, "pulp.constants.LpStatusUndefined", false]], "lpsum() (in module pulp)": [[30, "pulp.lpSum", false]], "lpvariable (class in pulp)": [[30, "pulp.LpVariable", false]], "makeelasticsubproblem() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.makeElasticSubProblem", false]], "mipcl_cmd (class in pulp.apis)": [[31, "pulp.apis.MIPCL_CMD", false]], "mktemp() (in module pulp.apis)": [[31, "pulp.apis.mktemp", false]], "module": [[28, "module-pulp.constants", false], [30, "module-pulp", false], [31, "module-pulp.apis", false]], "mosek (class in pulp.apis)": [[31, "pulp.apis.MOSEK", false]], "name (pulp.apis.choco_cmd attribute)": [[31, "pulp.apis.CHOCO_CMD.name", false]], "name (pulp.apis.coin_cmd attribute)": [[31, "pulp.apis.COIN_CMD.name", false]], "name (pulp.apis.coinmp_dll attribute)": [[31, "pulp.apis.COINMP_DLL.name", false]], "name (pulp.apis.copt attribute)": [[31, "pulp.apis.COPT.name", false]], "name (pulp.apis.copt_cmd attribute)": [[31, "pulp.apis.COPT_CMD.name", false]], "name (pulp.apis.copt_dll attribute)": [[31, "pulp.apis.COPT_DLL.name", false]], "name (pulp.apis.cplex_cmd attribute)": [[31, "pulp.apis.CPLEX_CMD.name", false]], "name (pulp.apis.cplex_py attribute)": [[31, "pulp.apis.CPLEX_PY.name", false]], "name (pulp.apis.fscip_cmd attribute)": [[31, "pulp.apis.FSCIP_CMD.name", false]], "name (pulp.apis.glpk_cmd attribute)": [[31, "pulp.apis.GLPK_CMD.name", false]], "name (pulp.apis.gurobi attribute)": [[31, "pulp.apis.GUROBI.name", false]], "name (pulp.apis.gurobi_cmd attribute)": [[31, "pulp.apis.GUROBI_CMD.name", false]], "name (pulp.apis.highs attribute)": [[31, "pulp.apis.HiGHS.name", false]], "name (pulp.apis.highs_cmd attribute)": [[31, "pulp.apis.HiGHS_CMD.name", false]], "name (pulp.apis.lpsolver attribute)": [[31, "pulp.apis.LpSolver.name", false]], "name (pulp.apis.lpsolver_cmd attribute)": [[31, "pulp.apis.LpSolver_CMD.name", false]], "name (pulp.apis.mipcl_cmd attribute)": [[31, "pulp.apis.MIPCL_CMD.name", false]], "name (pulp.apis.mosek attribute)": [[31, "pulp.apis.MOSEK.name", false]], "name (pulp.apis.pulp_cbc_cmd attribute)": [[31, "pulp.apis.PULP_CBC_CMD.name", false]], "name (pulp.apis.pyglpk attribute)": [[31, "pulp.apis.PYGLPK.name", false]], "name (pulp.apis.scip_cmd attribute)": [[31, "pulp.apis.SCIP_CMD.name", false]], "name (pulp.apis.scip_py attribute)": [[31, "pulp.apis.SCIP_PY.name", false]], "name (pulp.apis.xpress attribute)": [[31, "pulp.apis.XPRESS.name", false]], "name (pulp.apis.xpress_py attribute)": [[31, "pulp.apis.XPRESS_PY.name", false]], "name (pulp.apis.yaposib attribute)": [[31, "pulp.apis.YAPOSIB.name", false]], "no_solution_statuses (pulp.apis.fscip_cmd attribute)": [[31, "pulp.apis.FSCIP_CMD.NO_SOLUTION_STATUSES", false]], "no_solution_statuses (pulp.apis.scip_cmd attribute)": [[31, "pulp.apis.SCIP_CMD.NO_SOLUTION_STATUSES", false]], "objective (pulp.lpproblem attribute)": [[30, "pulp.LpProblem.objective", false]], "parse_objective() (pulp.apis.fscip_cmd static method)": [[31, "pulp.apis.FSCIP_CMD.parse_objective", false]], "parse_status() (pulp.apis.fscip_cmd static method)": [[31, "pulp.apis.FSCIP_CMD.parse_status", false]], "parse_variable() (pulp.apis.fscip_cmd static method)": [[31, "pulp.apis.FSCIP_CMD.parse_variable", false]], "parser (in module pulp.apis)": [[31, "pulp.apis.Parser", false]], "permutation() (in module pulp)": [[30, "pulp.permutation", false]], "pulp": [[30, "module-pulp", false]], "pulp.apis": [[31, "module-pulp.apis", false]], "pulp.constants": [[28, "module-pulp.constants", false]], "pulp_cbc_cmd (class in pulp.apis)": [[31, "pulp.apis.PULP_CBC_CMD", false]], "pulp_cbc_path (pulp.apis.pulp_cbc_cmd attribute)": [[31, "pulp.apis.PULP_CBC_CMD.pulp_cbc_path", false]], "pulperror": [[28, "pulp.constants.PulpError", false]], "pulpsolvererror": [[31, "pulp.apis.PulpSolverError", false]], "pyglpk (class in pulp.apis)": [[31, "pulp.apis.PYGLPK", false]], "quote_path() (pulp.apis.xpress static method)": [[31, "pulp.apis.XPRESS.quote_path", false]], "readsol() (pulp.apis.choco_cmd static method)": [[31, "pulp.apis.CHOCO_CMD.readsol", false]], "readsol() (pulp.apis.copt_cmd method)": [[31, "pulp.apis.COPT_CMD.readsol", false]], "readsol() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.readsol", false]], "readsol() (pulp.apis.fscip_cmd static method)": [[31, "pulp.apis.FSCIP_CMD.readsol", false]], "readsol() (pulp.apis.glpk_cmd method)": [[31, "pulp.apis.GLPK_CMD.readsol", false]], "readsol() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.readsol", false]], "readsol() (pulp.apis.highs_cmd method)": [[31, "pulp.apis.HiGHS_CMD.readsol", false]], "readsol() (pulp.apis.mipcl_cmd static method)": [[31, "pulp.apis.MIPCL_CMD.readsol", false]], "readsol() (pulp.apis.scip_cmd static method)": [[31, "pulp.apis.SCIP_CMD.readsol", false]], "readsol() (pulp.apis.xpress static method)": [[31, "pulp.apis.XPRESS.readsol", false]], "readsol_lp() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.readsol_LP", false]], "readsol_mps() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.readsol_MPS", false]], "reelasticize() (pulp.fixedelasticsubproblem method)": [[30, "pulp.FixedElasticSubProblem.reElasticize", false]], "roundsolution() (pulp.lpproblem method)": [[30, "pulp.LpProblem.roundSolution", false]], "scip (in module pulp.apis)": [[31, "pulp.apis.SCIP", false]], "scip_cmd (class in pulp.apis)": [[31, "pulp.apis.SCIP_CMD", false]], "scip_py (class in pulp.apis)": [[31, "pulp.apis.SCIP_PY", false]], "scip_statuses (pulp.apis.scip_cmd attribute)": [[31, "pulp.apis.SCIP_CMD.SCIP_STATUSES", false]], "setconfiginformation() (in module pulp.apis)": [[31, "pulp.apis.setConfigInformation", false]], "setinitialvalue() (pulp.lpvariable method)": [[30, "pulp.LpVariable.setInitialValue", false]], "setobjective() (pulp.lpproblem method)": [[30, "pulp.LpProblem.setObjective", false]], "settmpdir() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.setTmpDir", false]], "silent_remove() (pulp.apis.lpsolver_cmd method)": [[31, "pulp.apis.LpSolver_CMD.silent_remove", false]], "solution_style (pulp.apis.highs_cmd attribute)": [[31, "pulp.apis.HiGHS_CMD.SOLUTION_STYLE", false]], "solve() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.solve", false]], "solve() (pulp.lpproblem method)": [[30, "pulp.LpProblem.solve", false]], "solve_cbc() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.solve_CBC", false]], "sorted_keys() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.sorted_keys", false]], "status (pulp.lpproblem attribute)": [[30, "pulp.LpProblem.status", false]], "to_dict() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.to_dict", false]], "to_dict() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.to_dict", false]], "to_dict() (pulp.lpvariable method)": [[30, "pulp.LpVariable.to_dict", false]], "to_json() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.to_json", false]], "to_string() (in module pulp.apis)": [[31, "pulp.apis.to_string", false]], "todict() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.toDict", false]], "todict() (pulp.lpaffineexpression method)": [[30, "pulp.LpAffineExpression.toDict", false]], "todict() (pulp.lpconstraint method)": [[30, "pulp.LpConstraint.toDict", false]], "todict() (pulp.lpvariable method)": [[30, "pulp.LpVariable.toDict", false]], "tojson() (pulp.apis.lpsolver method)": [[31, "pulp.apis.LpSolver.toJson", false]], "tojson() (pulp.lpproblem method)": [[30, "pulp.LpProblem.toJson", false]], "uuid4() (in module pulp.apis)": [[31, "pulp.apis.uuid4", false]], "value() (in module pulp)": [[30, "pulp.value", false]], "variables() (pulp.lpproblem method)": [[30, "pulp.LpProblem.variables", false]], "with_traceback() (pulp.constants.pulperror method)": [[28, "pulp.constants.PulpError.with_traceback", false]], "writelp() (pulp.lpproblem method)": [[30, "pulp.LpProblem.writeLP", false]], "writemps() (pulp.lpproblem method)": [[30, "pulp.LpProblem.writeMPS", false]], "writemst() (pulp.apis.copt_cmd method)": [[31, "pulp.apis.COPT_CMD.writemst", false]], "writeslxsol() (pulp.apis.xpress method)": [[31, "pulp.apis.XPRESS.writeslxsol", false]], "writesol() (pulp.apis.coin_cmd method)": [[31, "pulp.apis.COIN_CMD.writesol", false]], "writesol() (pulp.apis.cplex_cmd method)": [[31, "pulp.apis.CPLEX_CMD.writesol", false]], "writesol() (pulp.apis.gurobi_cmd method)": [[31, "pulp.apis.GUROBI_CMD.writesol", false]], "writesol() (pulp.apis.highs_cmd method)": [[31, "pulp.apis.HiGHS_CMD.writesol", false]], "xpress (class in pulp.apis)": [[31, "pulp.apis.XPRESS", false]], "xpress_cmd (in module pulp.apis)": [[31, "pulp.apis.XPRESS_CMD", false]], "xpress_py (class in pulp.apis)": [[31, "pulp.apis.XPRESS_PY", false]], "yaposib (class in pulp.apis)": [[31, "pulp.apis.YAPOSIB", false]]}, "objects": {"": [[30, 0, 0, "-", "pulp"]], "pulp": [[30, 1, 1, "", "FixedElasticSubProblem"], [30, 1, 1, "", "LpAffineExpression"], [30, 1, 1, "", "LpConstraint"], [30, 1, 1, "", "LpElement"], [30, 1, 1, "", "LpProblem"], [30, 1, 1, "", "LpVariable"], [30, 4, 1, "", "allcombinations"], [30, 4, 1, "", "allpermutations"], [31, 0, 0, "-", "apis"], [30, 4, 1, "", "combination"], [28, 0, 0, "-", "constants"], [30, 4, 1, "", "lpSum"], [30, 4, 1, "", "permutation"], [30, 4, 1, "", "value"]], "pulp.FixedElasticSubProblem": [[30, 2, 1, "", "alterName"], [30, 2, 1, "", "deElasticize"], [30, 2, 1, "", "findDifferenceFromRHS"], [30, 2, 1, "", "findLHSValue"], [30, 2, 1, "", "isViolated"], [30, 2, 1, "", "reElasticize"]], "pulp.LpAffineExpression": [[30, 2, 1, "", "addInPlace"], [30, 2, 1, "", "asCplexLpAffineExpression"], [30, 2, 1, "", "asCplexVariablesOnly"], [30, 2, 1, "", "copy"], [30, 2, 1, "", "sorted_keys"], [30, 2, 1, "", "toDict"], [30, 2, 1, "", "to_dict"]], "pulp.LpConstraint": [[30, 2, 1, "", "addInPlace"], [30, 2, 1, "", "asCplexLpConstraint"], [30, 2, 1, "", "changeRHS"], [30, 2, 1, "", "copy"], [30, 2, 1, "", "fromDict"], [30, 2, 1, "", "from_dict"], [30, 2, 1, "", "makeElasticSubProblem"], [30, 2, 1, "", "toDict"]], "pulp.LpProblem": [[30, 3, 1, "", "constraints"], [30, 2, 1, "", "fromJson"], [30, 3, 1, "", "objective"], [30, 2, 1, "", "roundSolution"], [30, 2, 1, "", "setObjective"], [30, 2, 1, "", "solve"], [30, 3, 1, "", "status"], [30, 2, 1, "", "toJson"], [30, 2, 1, "", "variables"], [30, 2, 1, "", "writeLP"], [30, 2, 1, "", "writeMPS"]], "pulp.LpVariable": [[30, 2, 1, "", "addVariableToConstraints"], [30, 2, 1, "", "dicts"], [30, 2, 1, "", "fixValue"], [30, 2, 1, "", "fromDict"], [30, 2, 1, "", "from_dict"], [30, 2, 1, "", "isFixed"], [30, 2, 1, "", "setInitialValue"], [30, 2, 1, "", "toDict"], [30, 2, 1, "", "to_dict"]], "pulp.apis": [[31, 1, 1, "", "CHOCO_CMD"], [31, 3, 1, "", "COIN"], [31, 1, 1, "", "COINMP_DLL"], [31, 4, 1, "", "COINMP_DLL_load_dll"], [31, 1, 1, "", "COIN_CMD"], [31, 1, 1, "", "COPT"], [31, 1, 1, "", "COPT_CMD"], [31, 1, 1, "", "COPT_DLL"], [31, 4, 1, "", "COPT_DLL_loadlib"], [31, 3, 1, "", "CPLEX"], [31, 1, 1, "", "CPLEX_CMD"], [31, 1, 1, "", "CPLEX_PY"], [31, 3, 1, "", "FSCIP"], [31, 1, 1, "", "FSCIP_CMD"], [31, 3, 1, "", "GLPK"], [31, 1, 1, "", "GLPK_CMD"], [31, 1, 1, "", "GUROBI"], [31, 1, 1, "", "GUROBI_CMD"], [31, 1, 1, "", "HiGHS"], [31, 1, 1, "", "HiGHS_CMD"], [31, 1, 1, "", "LpSolver"], [31, 1, 1, "", "LpSolver_CMD"], [31, 1, 1, "", "MIPCL_CMD"], [31, 1, 1, "", "MOSEK"], [31, 1, 1, "", "PULP_CBC_CMD"], [31, 1, 1, "", "PYGLPK"], [31, 3, 1, "", "Parser"], [31, 5, 1, "", "PulpSolverError"], [31, 3, 1, "", "SCIP"], [31, 1, 1, "", "SCIP_CMD"], [31, 1, 1, "", "SCIP_PY"], [31, 1, 1, "", "XPRESS"], [31, 3, 1, "", "XPRESS_CMD"], [31, 1, 1, "", "XPRESS_PY"], [31, 1, 1, "", "YAPOSIB"], [31, 4, 1, "", "byref"], [31, 4, 1, "", "clock"], [31, 4, 1, "", "configSolvers"], [31, 4, 1, "", "coptstr"], [31, 4, 1, "", "ctypesArrayFill"], [31, 4, 1, "", "getSolver"], [31, 4, 1, "", "getSolverFromDict"], [31, 4, 1, "", "getSolverFromJson"], [31, 4, 1, "", "initialize"], [31, 4, 1, "", "listSolvers"], [31, 4, 1, "", "mktemp"], [31, 4, 1, "", "setConfigInformation"], [31, 4, 1, "", "to_string"], [31, 4, 1, "", "uuid4"]], "pulp.apis.CHOCO_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"]], "pulp.apis.COINMP_DLL": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.COIN_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "copy"], [31, 2, 1, "", "defaultPath"], [31, 2, 1, "", "getOptions"], [31, 2, 1, "", "get_status"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol_LP"], [31, 2, 1, "", "readsol_MPS"], [31, 2, 1, "", "solve_CBC"], [31, 2, 1, "", "writesol"]], "pulp.apis.COPT": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.COPT_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"], [31, 2, 1, "", "writemst"]], "pulp.apis.COPT_DLL": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "err"], [31, 3, 1, "", "name"]], "pulp.apis.CPLEX_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 2, 1, "", "getOptions"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"], [31, 2, 1, "", "writesol"]], "pulp.apis.CPLEX_PY": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "err"], [31, 3, 1, "", "name"]], "pulp.apis.FSCIP_CMD": [[31, 3, 1, "", "FSCIP_STATUSES"], [31, 3, 1, "", "NO_SOLUTION_STATUSES"], [31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "parse_objective"], [31, 2, 1, "", "parse_status"], [31, 2, 1, "", "parse_variable"], [31, 2, 1, "", "readsol"]], "pulp.apis.GLPK_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"]], "pulp.apis.GUROBI": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "env"], [31, 3, 1, "", "name"]], "pulp.apis.GUROBI_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 2, 1, "", "getOptions"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"], [31, 2, 1, "", "writesol"]], "pulp.apis.HiGHS": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.HiGHS_CMD": [[31, 3, 1, "", "SOLUTION_STYLE"], [31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"], [31, 2, 1, "", "writesol"]], "pulp.apis.LpSolver": [[31, 2, 1, "", "actualResolve"], [31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "copy"], [31, 2, 1, "", "getCplexStyleArrays"], [31, 3, 1, "", "name"], [31, 2, 1, "", "solve"], [31, 2, 1, "", "toDict"], [31, 2, 1, "", "toJson"], [31, 2, 1, "", "to_dict"], [31, 2, 1, "", "to_json"]], "pulp.apis.LpSolver_CMD": [[31, 2, 1, "", "copy"], [31, 2, 1, "", "create_tmp_files"], [31, 2, 1, "", "defaultPath"], [31, 2, 1, "", "delete_tmp_files"], [31, 2, 1, "", "executable"], [31, 2, 1, "", "executableExtension"], [31, 3, 1, "", "name"], [31, 2, 1, "", "setTmpDir"], [31, 2, 1, "", "silent_remove"]], "pulp.apis.MIPCL_CMD": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"]], "pulp.apis.MOSEK": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.PULP_CBC_CMD": [[31, 3, 1, "", "name"], [31, 3, 1, "", "pulp_cbc_path"]], "pulp.apis.PYGLPK": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.SCIP_CMD": [[31, 3, 1, "", "NO_SOLUTION_STATUSES"], [31, 3, 1, "", "SCIP_STATUSES"], [31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "readsol"]], "pulp.apis.SCIP_PY": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.apis.XPRESS": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "defaultPath"], [31, 3, 1, "", "name"], [31, 2, 1, "", "quote_path"], [31, 2, 1, "", "readsol"], [31, 2, 1, "", "writeslxsol"]], "pulp.apis.XPRESS_PY": [[31, 2, 1, "", "actualResolve"], [31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 2, 1, "", "buildSolverModel"], [31, 2, 1, "", "callSolver"], [31, 2, 1, "", "findSolutionValues"], [31, 2, 1, "", "getAttribute"], [31, 3, 1, "", "name"]], "pulp.apis.YAPOSIB": [[31, 2, 1, "", "actualSolve"], [31, 2, 1, "", "available"], [31, 3, 1, "", "name"]], "pulp.constants": [[28, 6, 1, "", "LpConstraintEQ"], [28, 6, 1, "", "LpConstraintGE"], [28, 6, 1, "", "LpConstraintLE"], [28, 6, 1, "", "LpConstraintSenses"], [28, 6, 1, "", "LpContinuous"], [28, 6, 1, "", "LpMaximize"], [28, 6, 1, "", "LpMinimize"], [28, 6, 1, "", "LpSenses"], [28, 6, 1, "", "LpSolution"], [28, 6, 1, "", "LpStatus"], [28, 6, 1, "", "LpStatusInfeasible"], [28, 6, 1, "", "LpStatusNotSolved"], [28, 6, 1, "", "LpStatusOptimal"], [28, 6, 1, "", "LpStatusUnbounded"], [28, 6, 1, "", "LpStatusUndefined"], [28, 5, 1, "", "PulpError"], [28, 4, 1, "", "isiterable"]], "pulp.constants.PulpError": [[28, 3, 1, "", "args"], [28, 2, 1, "", "with_traceback"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"], "5": ["py", "exception", "Python exception"], "6": ["py", "data", "Python data"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function", "5": "py:exception", "6": "py:data"}, "terms": {"": [0, 1, 2, 3, 4, 6, 7, 9, 10, 12, 15, 17, 18, 20, 22, 25, 30], "0": [0, 1, 2, 3, 4, 6, 9, 11, 12, 13, 17, 18, 25, 26, 28, 30, 31], "000": 0, "001": 0, "002": 0, "003": 0, "005": 0, "007": 0, "008": 0, "01": 11, "010": 0, "013": 0, "02": 11, "04": 17, "040": 0, "05": [11, 30], "07": 30, "080": 0, "09123642123": 10, "1": [0, 1, 2, 3, 4, 6, 9, 10, 11, 13, 14, 17, 18, 25, 26, 28, 30, 31], "10": [2, 3, 4, 9, 12, 17, 26, 30, 31], "100": [0, 3, 4, 17, 30], "1000": 3, "100000000000": 10, "100g": 0, "11": 17, "110": 0, "12": [10, 17, 31], "1200": 10, "1234567": 3, "13": 17, "130": 4, "14": 17, "149085": 26, "15": [4, 17, 26], "150": 0, "16": [4, 26], "160": 4, "167": 26, "17": 17, "170": 26, "171": 26, "178": 26, "17851": 26, "1800": 3, "19": 17, "199175": 26, "1e": [30, 31], "2": [0, 2, 3, 4, 6, 11, 14, 17, 18, 20, 25, 26, 28, 30, 31], "20": [17, 31], "200": [0, 3, 11], "2003": 18, "2005": 18, "2007": [0, 3, 31], "2009": [1, 13], "2012": 31, "2019": [4, 13], "21": [4, 17, 26], "22": 26, "22010": 26, "23": [17, 26], "25": [4, 17], "26": 26, "26871": 26, "27": 4, "2g": 0, "3": [2, 3, 4, 9, 12, 17, 18, 20, 25, 26, 28, 30, 31], "317": 26, "319": 26, "32": [10, 20], "33": 0, "336": 26, "35616": 26, "384": 10, "3x3": 2, "4": [0, 1, 2, 3, 4, 12, 13, 17, 18, 20, 22, 26, 30], "40": 0, "4000": 3, "41": 26, "410": 10, "4100": 3, "45": 2, "46": 26, "4861": 26, "4g": 0, "4th": 4, "5": [0, 1, 2, 3, 4, 9, 11, 12, 13, 17, 30, 31], "500": [3, 11], "5000": 3, "52": [0, 6], "526": 26, "53467": 26, "58": 4, "5w_": 4, "6": [0, 2, 17], "60": 0, "64": [10, 20, 31], "64_linux": 9, "66": 0, "67": [0, 26], "6g": 0, "7": [2, 4, 12, 17, 18, 20, 26], "700": 3, "729": 2, "8": [0, 2, 4, 10, 17], "80": 2, "81": 2, "8g": 0, "9": [2, 12, 17, 25], "90": 4, "900": 3, "91701": 26, "94318": 26, "96": 0, "97660": 26, "97894": 26, "9x9": 2, "A": [5, 7, 9, 11, 12, 13, 15, 17, 18, 22, 25, 30, 31], "AND": 31, "And": [7, 10, 12, 17, 31], "As": [0, 2, 3, 6, 9, 10, 12, 17], "At": [3, 4, 13, 17], "BE": 31, "But": [9, 12], "By": [9, 20, 22], "For": [0, 3, 7, 9, 10, 12, 13, 15, 17, 18, 21, 22, 31], "If": [0, 2, 3, 9, 10, 13, 17, 18, 22, 31], "In": [1, 2, 4, 6, 7, 9, 13, 17, 20, 22, 30], "Into": 17, "It": [0, 6, 7, 9, 12, 20, 25, 26, 27, 31], "NOT": 31, "No": [17, 28, 31], "Not": [0, 9, 28], "OR": [15, 18, 24], "Of": 10, "On": [2, 7, 18], "Or": [9, 12], "Such": 3, "TO": 12, "That": 7, "The": [1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 31], "Then": [0, 1, 17, 20], "There": [2, 3, 6, 9, 10], "These": [0, 2, 4, 6, 9, 17], "To": [0, 1, 2, 3, 4, 7, 10, 13, 17, 18, 20, 22], "With": [9, 17], "_": 12, "_6": 0, "___": 3, "____": 3, "_____": 3, "__________": 3, "__init__": [6, 17], "__str__": 17, "__traceback__": 28, "_all_solv": 6, "_balance_": 3, "_balanced_": 3, "_cmd": 9, "_dict": 30, "_dummy_": 3, "_obj": 31, "_var": 9, "_var2": 9, "_variabl": 13, "a1": [3, 18], "a1x1": 18, "a2": [3, 9, 18], "a2x2": 18, "a3": 3, "a4": 3, "a5": 3, "a_1": 21, "a_2": 21, "a_3": 21, "a_i": [21, 30], "a_n": 21, "ab": [1, 12, 13, 25], "abl": [2, 9, 12, 20], "about": [3, 9, 11, 31], "abov": [0, 2, 3, 9, 17], "absolut": [9, 31], "abstract": 22, "ac": 15, "academ": 20, "accept": 31, "access": [10, 14, 17, 18, 20], "accommod": 3, "accord": 2, "account": [6, 7, 10, 12], "accur": 7, "accuraci": 22, "act": 17, "activ": [7, 14], "actual": [2, 4, 7, 9, 22, 30, 31], "actualresolv": 31, "actualsolv": [8, 30, 31], "ad": [0, 2, 3, 4, 8, 9, 10, 17, 18, 30, 31], "adapt": [9, 13], "add": [0, 4, 7, 8, 9, 10, 15, 18, 30, 31], "addinplac": 30, "addit": [0, 6, 10, 14, 25, 30, 31], "addvariabletoconstraint": 30, "admin": 9, "advantag": [1, 9, 12, 22], "advic": 10, "advis": 0, "affect": [3, 17], "affin": 30, "after": [0, 2, 4, 9, 17, 20, 22, 30, 31], "afterward": 13, "again": [0, 2, 9, 12, 22, 25, 30, 31], "against": 31, "aim": [10, 22], "algebra": 0, "algorithm": [22, 31], "alia": 31, "all": [0, 1, 2, 3, 6, 7, 9, 10, 12, 13, 17, 20, 22, 25, 30, 31], "allcombin": [1, 12, 13, 30], "alloc": 1, "allow": [0, 1, 6, 9, 21, 23, 25, 31], "allpermut": 30, "almost": 21, "along": 3, "alreadi": [0, 3, 9, 10, 13, 20, 22], "also": [0, 2, 3, 7, 9, 10, 12, 13, 17, 20, 21, 22, 26, 27], "alter": [22, 30], "altern": [3, 10, 12], "alternam": 30, "although": [0, 9, 10], "alwai": [3, 10, 17], "among": 9, "amount": [0, 3, 30], "ampl": [15, 24], "ampli": [15, 19, 24], "an": [0, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 25, 30, 31], "anaconda": 14, "analysi": [0, 5], "andrew": 15, "ani": [0, 1, 2, 9, 10, 12, 15, 17, 20, 21, 22, 27], "anita": 15, "anonym": 30, "anoth": [2, 3, 9, 10, 12, 17, 18, 22], "answer": 10, "antoni": [0, 2, 3, 15], "anxn": 18, "anyth": 2, "anywai": 0, "api": [8, 14, 15, 29], "app1": 26, "appar": 10, "appear": 3, "appli": [4, 8, 11, 30], "applic": 9, "approach": [1, 2], "appropri": [3, 22], "apt": 20, "ar": [0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 17, 18, 21, 22, 30, 31], "arbitrari": [0, 31], "arc": 3, "arch": 31, "arg": [28, 30, 31], "argmax": 25, "argument": [6, 9, 10, 13, 17, 30, 31], "around": 31, "arrai": [19, 31], "ascplexlpaffineexpress": 30, "ascplexlpconstraint": 30, "ascplexvariablesonli": 30, "ask": [14, 22], "assembli": 4, "assembly_dict": 4, "assess": 11, "assign": [0, 13, 17], "assignstatu": 6, "assignvarsv": 6, "associ": [3, 4, 17, 30], "assum": [0, 3, 7, 15, 17, 30, 31], "assumpt": 3, "asterisk": 17, "asymmetr": 11, "attent": 22, "attrfil": 31, "attribut": [0, 6, 9, 17, 30, 31], "auckland": 15, "author": [0, 1, 2, 3, 4, 13], "automat": [9, 12], "avail": [2, 3, 4, 8, 9, 12, 15, 17, 18, 22, 31], "avoid": 3, "awfulli": 2, "axi": 25, "b": [1, 2, 3, 11, 12, 13, 18, 21, 30], "b1": 3, "b2": 3, "b3": 3, "b4": 3, "b5": 3, "back": [20, 22], "backup": 9, "backward": 31, "balanc": 3, "bar": 3, "base": [4, 7, 8, 9, 12, 20, 28, 30, 31], "basesolvertest": 6, "bash": 9, "bashrc": 9, "basic": [15, 19], "beaten": 31, "becaus": [0, 2, 3, 6, 9, 12], "becom": [0, 1, 2, 10, 12, 17, 18], "beef": [0, 17], "beefperc": 0, "been": [2, 3, 10, 12, 13, 16, 17, 31], "beer": 3, "beerdistributionproblem": 3, "beerdistributionproblemcompetitorextens": 3, "beerdistributionproblemwarehouseextens": 3, "befor": [0, 6, 7, 9, 12, 15, 17, 31], "begin": [0, 4, 15, 17], "beginn": 17, "beginnersguid": 17, "being": [0, 2, 3, 9, 10, 30], "below": [0, 2, 3, 10, 12, 13, 15, 17, 20], "ben": 0, "benefit": 22, "bertsima": 4, "best": [6, 22, 26], "best_bound": 26, "best_solut": 26, "better": [0, 2, 9, 17], "between": [0, 1, 2, 6, 12, 13], "big": [2, 9, 10], "bin": [7, 9], "binari": [1, 2, 10, 12, 13, 20, 25, 28, 30, 31], "bind": 31, "bit": [10, 20], "black": 8, "blank": 0, "blend": [3, 5, 15], "block": 0, "board": 25, "bodi": 17, "book": 17, "bool": [30, 31], "boolean": 25, "borrow": 31, "both": [9, 12, 17], "bottom": 17, "bound": [0, 3, 13, 21, 22, 26, 30], "boutiqu": 3, "box": [2, 25], "bracket": [0, 17], "bran": 0, "branch": [21, 31], "break": [2, 22], "breweri": 3, "brief": [0, 30], "bring": 10, "broadcast": 25, "broken": 22, "browser": [7, 18], "bug": 18, "build": [0, 8, 10, 12, 30], "buildsolvermodel": [6, 9, 31], "built": [10, 18], "bundl": 20, "byref": 31, "byte": 31, "c": [1, 2, 3, 4, 9, 11, 12, 13, 20, 25, 30, 31], "c1": 12, "c2": 12, "c3": 12, "c_": 3, "c_doubl": 31, "calcul": [1, 12, 13, 17, 30], "call": [0, 2, 3, 6, 9, 11, 17, 18, 20, 21, 22, 30, 31], "callabl": [20, 31], "callback": 31, "callsolv": [6, 9, 31], "can": [0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 17, 18, 20, 21, 22, 27, 30, 31], "cannot": [0, 2, 3, 6, 12, 17, 22, 31], "cap_": 4, "capabl": 4, "capac": [3, 4], "capacity_dict": 4, "capacity_ub": 4, "capassembli": 4, "capmold": 4, "capsteel": 4, "captur": 22, "carefulli": [3, 22], "case": [0, 1, 2, 3, 4, 9, 10, 13, 15], "cast": 12, "cat": [0, 1, 2, 4, 12, 13, 30], "categori": 30, "caus": [0, 10], "caveat": 14, "cbc": [14, 18, 20, 26, 31], "cbc_cmd": 13, "cd": [7, 9, 18, 20], "cdll": 31, "cent": 0, "chain": 27, "challeng": 17, "chanc": 22, "chang": [0, 3, 4, 6, 7, 9, 20, 21, 22, 28, 30], "changeabl": 2, "changerh": 30, "chapter7": 31, "charact": 31, "cheaper": 3, "cheapli": 0, "check": [3, 10, 13, 14, 30, 31], "checkduplicatevar": 6, "checklengthvar": 6, "chicken": [0, 17], "chickenperc": 0, "choco": [18, 31], "choco_cmd": [9, 31], "choic": [0, 2, 4, 7], "choice_4_2_9": 2, "choos": [0, 9], "chosen": [1, 3, 13], "christoph": 31, "cl": 12, "class": [0, 8, 12, 15, 18, 27, 28, 29, 31], "classmethod": [30, 31], "clear": [2, 17], "clearli": [0, 2, 22], "clever": 12, "click": [13, 20], "client": [7, 22], "clip": 25, "cliqu": 26, "clock": 31, "clone": 8, "close": [2, 20], "clp": [18, 31], "cmd": [6, 14, 20], "co": 1, "code": [0, 2, 3, 6, 7, 12, 13, 15, 19, 20, 27], "coeffici": [10, 12, 22, 30], "coin": [10, 18, 22, 31], "coin_cmd": [9, 20, 31], "coin_mp": 31, "coinmp_dll": [9, 20, 31], "coinmp_dll_load_dl": 31, "col": [2, 26], "collect": 0, "colon": 17, "column": [1, 2, 18, 20, 26, 30], "columnwis": 30, "com": [4, 7, 10, 15, 16, 18, 23, 25, 26, 31], "combin": [2, 3, 4, 10, 18], "come": [3, 9, 22, 30, 31], "comma": [0, 17], "command": [6, 7, 9, 10, 17, 20, 31], "comment": [0, 2, 3, 18], "commit": 7, "common": 10, "compani": 4, "compar": [2, 3], "comparison": 4, "compil": 31, "complet": [10, 12, 13], "complic": [2, 4], "comprehens": [0, 3, 4, 22], "comput": [3, 9, 12], "concaten": 12, "concept": [9, 15, 19], "concern": 2, "concis": [17, 22], "conda": 14, "condit": [17, 21], "configpars": 31, "configsolv": 31, "configur": [6, 14, 15, 18, 31], "confirm": 13, "connect": [3, 9], "consecut": 17, "consequ": 22, "consid": [0, 2, 3, 22], "consider": [3, 6, 14, 22], "consist": 6, "consol": [4, 9, 31], "constant": [6, 12, 15, 21, 29, 30], "constrain": [3, 25], "constraint": [1, 4, 10, 12, 14, 15, 18, 20, 21, 22, 26, 31], "constraint_1": 11, "constraint_2": 11, "constraintsnam": 31, "construct": [18, 22], "constructor": 9, "consult": 22, "contain": [0, 1, 2, 3, 6, 11, 17, 18, 21, 28, 30], "content": [15, 17, 26], "continu": [0, 4, 12, 17, 20, 21, 28, 30], "contribut": [0, 4, 8, 15], "control": [2, 9, 31], "convent": [6, 12], "convert": [0, 4, 30], "coordin": 25, "copi": [0, 9, 30, 31], "copt": [9, 31], "copt_cmd": 31, "copt_dll": 31, "copt_dll_loadlib": 31, "coptstr": 31, "copyright": [18, 31], "core": 6, "correctli": [9, 10, 13, 20], "correspond": [2, 4, 6, 17], "cost": [0, 3, 4, 9, 12, 17, 22], "could": [0, 2, 3, 10, 12, 13, 17, 22], "count": 31, "coupl": 6, "cours": [3, 10, 17], "cover": [1, 6, 31], "covercut": 31, "cplex": [0, 10, 18, 20, 21, 22, 26, 31], "cplex_cmd": [9, 13, 20, 31], "cplex_dll": [9, 20], "cplex_hom": 9, "cplex_pi": [13, 20, 31], "cplex_studio128": 9, "cpo_hom": 9, "cpoptim": 9, "cpu": 31, "crate": 3, "creat": [0, 1, 2, 3, 4, 8, 9, 12, 13, 17, 18, 22, 26, 30, 31], "create_anon": 25, "create_tmp_fil": [6, 31], "creation": 17, "cross": 9, "crucial": 22, "ctype": 31, "ctypesarrayfil": 31, "cumbersom": 9, "curli": 17, "current": [9, 17, 20, 21, 31], "custom": 12, "cut": [26, 31], "cut_info": 26, "cutsbestbound": 26, "cycl": [0, 3], "d": [1, 3, 11, 12, 13], "d_b": 3, "data": [0, 2, 3, 4, 6, 14, 15, 17, 22, 24, 26, 30, 31], "databas": 4, "datafram": 26, "date": 0, "de": 30, "debain": 20, "debug": [14, 15, 31], "decid": [0, 3, 4, 22], "decim": 10, "decis": [4, 21, 22], "declar": [6, 23], "deelastic": 30, "deem": 2, "def": [1, 6, 12, 13, 17], "default": [0, 3, 6, 9, 10, 12, 13, 17, 18, 20, 30, 31], "defaultpath": [8, 31], "defin": [0, 1, 2, 3, 4, 6, 11, 17, 22, 27, 30], "definit": [2, 3, 17, 28], "delet": [2, 9, 31], "delete_tmp_fil": [6, 31], "deliv": 3, "demand": [3, 4], "demonstr": 17, "denot": [11, 17], "depend": [0, 7, 9, 17, 31], "deploi": 9, "depth": 26, "describ": [0, 10, 20], "descript": 5, "design": 31, "desktop": 20, "detail": [3, 6, 10, 21, 22], "detect": 7, "determin": [1, 4, 22], "dev": [7, 18, 31], "develop": [7, 15], "devnul": 6, "diagram": [3, 22], "dict": [0, 1, 2, 3, 4, 12, 13, 17, 30, 31], "dictionari": [0, 3, 4, 9, 12, 13, 15, 24, 26, 28, 30, 31], "did": [2, 9, 10, 31], "differ": [0, 9, 17, 22, 31], "differenti": 4, "difficult": [1, 21], "digit": 25, "dimens": 17, "dir": 31, "directli": [0, 7, 9, 10, 12], "directori": [0, 3, 6, 7, 9, 10, 18, 20, 31], "discret": 0, "discuss": [10, 18], "disk": 9, "dispatch": 3, "displai": [0, 17, 18, 20], "distanc": [1, 11, 12, 13], "distinct": 25, "distribut": [3, 20], "dive": 17, "divid": [0, 20], "divis": 17, "dj": [12, 30], "dll": 31, "dmd": 4, "do": [0, 2, 4, 6, 7, 9, 10, 12, 13, 17, 18, 20, 22, 25, 30], "doc": [7, 18, 31], "document": [8, 9, 10, 15, 19], "doe": [0, 1, 6, 9, 12, 17, 30, 31], "dollar": 3, "don": [2, 3, 22], "done": [0, 4, 6, 7, 9, 17, 21, 22], "dot": 0, "doubl": 31, "down": 22, "download": [7, 10, 17, 18, 20], "dr": [0, 2, 3], "dramat": 2, "draw": 2, "drive": [9, 20], "dual": [9, 20, 21], "due": 3, "dummi": 3, "duplic": [6, 10], "duquesn": 31, "dure": [3, 9, 14, 15, 31], "dynam": [9, 31], "e": [0, 1, 2, 3, 6, 9, 10, 12, 13, 17, 22, 30, 31], "each": [0, 1, 2, 3, 4, 6, 7, 9, 12, 13, 17, 20, 22, 30, 31], "earlier": 15, "earn": 4, "easi": [3, 7, 9, 27], "easier": [0, 2, 12], "easiest": [7, 18, 20], "easili": [0, 3, 17, 22], "economi": 3, "edit": [2, 3, 4, 9, 31], "editor": [0, 10], "effect": [2, 21, 22, 30], "effici": [1, 3, 25, 27], "either": [0, 11, 17, 20, 22, 30, 31], "elaps": 31, "elast": [14, 15, 20, 30], "elastic": [11, 30], "elasticproblem": 11, "elasticproblem_1": 11, "elasticproblem_2": 11, "eleg": 2, "element": [0, 1, 2, 4, 17, 30, 31], "elif": [12, 17], "els": [2, 6, 9, 12, 17, 31], "empti": [0, 17, 30], "encod": 12, "end": [0, 2, 4, 9, 12, 13, 17], "end_messag": 17, "endmessag": 17, "enorm": 21, "enough": [9, 12], "ensur": [0, 2, 7], "enter": [0, 2, 3, 17, 20, 22], "entri": 0, "enumer": 1, "env": 31, "environ": [7, 14, 18], "eol": 17, "ep": 30, "epgap": 31, "epsint": 30, "equal": [0, 2, 3, 4, 11], "equat": 0, "equival": 30, "err": 31, "error": [6, 14, 15], "escap": 31, "essenti": [0, 2], "etc": [0, 3, 9, 20, 26], "even": [10, 31], "eventu": 17, "ever": 25, "everi": [2, 3, 7, 17], "ex": [9, 14, 18], "ex_1": 11, "ex_2": 11, "exact": 2, "exactli": [0, 1, 2, 3, 10, 12], "examin": [11, 22], "exampl": [0, 2, 3, 8, 9, 10, 11, 14, 17, 19, 20, 22, 25, 26, 27, 30], "exce": [3, 17], "excel": [17, 22], "except": [6, 17, 21, 28, 30, 31], "excess": 3, "execut": [6, 7, 9, 14, 18, 31], "executableextens": [6, 31], "exercis": 0, "exist": [2, 6, 9, 17, 28, 30, 31], "exit": 31, "expand": 3, "expect": [6, 20, 31], "expert": 5, "explain": [0, 2, 3, 6, 9, 15], "explicit": [9, 17, 22], "explicitli": [0, 1, 2], "exponenti": 21, "export": [10, 14, 15, 18, 30, 31], "express": [1, 2, 4, 18, 21, 22], "extens": 5, "extern": 20, "extra": [3, 5, 8], "extract": [0, 20], "extrem": 9, "f": [1, 3, 12, 13, 30], "fact": [2, 17], "factor": 3, "factori": 22, "fail": 22, "fairli": 9, "fals": [2, 6, 9, 30, 31], "far": 20, "fast": [9, 12, 17], "faster": 9, "fat": 0, "fatperc": 0, "fatrequir": 0, "feasibl": [2, 10, 20], "featur": [2, 19], "feedback": [14, 22], "feel": 7, "few": [0, 2], "fiberscip": 31, "fibr": 0, "fibreperc": 0, "fibrerequir": 0, "fico": 31, "fifth": 17, "file": [0, 1, 2, 3, 4, 6, 7, 10, 11, 12, 14, 17, 18, 20, 22, 28, 30, 31], "filenam": [30, 31], "fill": [2, 6, 9, 14], "final": [0, 2, 3, 4, 7, 9, 10, 11, 22, 31], "financi": 3, "find": [1, 2, 4, 6, 7, 9, 12, 13, 18, 21, 30], "finddifferencefromrh": 30, "findlhsvalu": 30, "findsolutionvalu": [6, 9, 31], "finish": 6, "first": [0, 1, 2, 3, 4, 6, 7, 9, 10, 17, 20, 22], "first_relax": 26, "first_solut": 26, "firstli": 0, "fit": [12, 30], "five": [0, 3, 22], "fix": [3, 7, 10, 14, 30], "fixedelasticsubproblem": [11, 30], "fixvalu": [13, 30], "flat": [12, 27], "flexibl": 12, "float": [12, 17, 30, 31], "flow": 3, "focu": 17, "folder": [2, 7, 10, 18, 20], "foldernam": 20, "follow": [0, 2, 3, 6, 7, 9, 10, 11, 12, 13, 17, 18, 20, 21, 26, 30, 31], "food": 0, "foral": 3, "forc": 31, "forecast": 3, "forget": 9, "fork": 8, "form": [3, 11, 18, 21, 22], "formal": [0, 22], "format": [0, 12, 17, 30, 31], "formatt": 8, "former": 9, "formul": [5, 6, 15, 31], "found": [0, 1, 2, 3, 4, 6, 9, 18, 26, 28, 31], "four": [0, 4], "fourth": [0, 17], "fraction": [3, 20, 31], "fractionelasticsubproblem": 30, "franco": [13, 15], "free": [7, 11, 20, 30], "freebound": 20, "freebound_list_valu": 11, "freebound_valu": 11, "freeli": [17, 20], "frequenc": 31, "frequent": 0, "freund": 4, "from": [0, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 17, 18, 21, 22, 25, 28, 30, 31], "from_dict": [12, 30], "from_json": 12, "fromdict": 30, "fromjson": 30, "frommp": 12, "fscip": [18, 31], "fscip_cmd": 31, "fscip_status": 31, "full": [1, 2, 4, 5, 15], "fulli": 0, "function": [1, 4, 6, 7, 10, 11, 15, 18, 20, 22, 25, 27, 30, 31], "fundament": 17, "further": [0, 3, 7, 21, 22], "futur": 22, "g": [0, 1, 3, 6, 9, 10, 12, 13, 22, 31], "gain": 13, "galor": 25, "game": 17, "gap": [26, 31], "gapab": 31, "gaprel": 31, "ge": [0, 3, 4, 11], "gel": 0, "gemston": 4, "gemstoneprob": 4, "gener": [1, 6, 10, 17, 18, 22, 30, 31], "get": [3, 6, 7, 9, 10, 12, 13, 18, 20, 31], "get_info_log_solv": 26, "get_statu": 31, "getattribut": 31, "getcplexstylearrai": 31, "getopt": 31, "getsolv": [9, 31], "getsolverfromdict": [9, 31], "getsolverfromjson": [9, 31], "git": [7, 18], "github": [4, 7, 10, 16, 18, 20, 23, 25, 26, 27, 31], "give": [0, 2, 3, 4, 9, 13, 14, 17, 22, 30], "given": [0, 2, 3, 13, 17, 18, 22, 30, 31], "glpk": [18, 20, 31], "glpk_cmd": [9, 20, 31], "gmail": [4, 15], "go": [3, 7, 9, 12, 20, 21, 31], "goal": [4, 22], "gomori": [26, 31], "good": [3, 10, 21, 31], "govern": 17, "gram": 0, "graphic": [3, 9], "greater": [0, 3], "grid": 2, "group": [9, 14, 17], "grow": 21, "gtc": 4, "guarante": [1, 3, 22], "guest": [1, 12, 13], "gui": [9, 20], "guid": [7, 9, 15, 17, 18], "gurobi": [6, 13, 18, 20, 22, 26, 31], "gurobi700": 26, "gurobi801": 9, "gurobi_cmd": [9, 13, 20, 31], "gurobi_hom": 9, "gurobipi": 6, "ha": [0, 3, 6, 10, 11, 12, 13, 14, 16, 31], "had": 2, "handl": [6, 10], "happen": 9, "happi": [1, 12, 13], "hard": [9, 22, 30], "hash": 17, "have": [0, 1, 2, 3, 4, 7, 9, 10, 12, 13, 15, 17, 20, 21, 22, 25, 27, 31], "head": [0, 3, 17], "heaven": [15, 24], "heavi": 25, "help": [3, 7, 14], "helper": [9, 27, 30], "here": [1, 3, 4, 6, 7, 9, 10, 12, 13, 17, 21], "heurdepth": 31, "heurfreq": 31, "heurist": [22, 31], "heurstra": 31, "high": [9, 10, 18, 31], "highli": [10, 17], "highs_cmd": 31, "highs_jll": 31, "home": [7, 15, 18, 19, 31], "hood": 25, "hopefulli": 28, "host": 17, "hour": [4, 22], "how": [0, 1, 3, 4, 8, 14, 15, 17, 18, 22], "howev": [0, 2, 15, 17, 22], "html": [7, 18, 27, 31], "http": [4, 10, 16, 18, 23, 25, 26, 27, 31], "i": [0, 1, 2, 3, 4, 6, 7, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 25, 26, 28, 30, 31], "ibm": 9, "id": 7, "idea": 9, "ideal": 6, "ident": 21, "identif": 22, "identifi": [12, 17, 22, 30], "idl": 20, "ignor": 0, "ilog": 9, "imagin": [9, 12], "implement": [0, 6, 22, 31], "impli": [3, 9, 13, 17, 26], "import": [0, 1, 2, 3, 4, 6, 10, 13, 14, 15, 19, 20, 21, 22, 25, 26, 30], "importantli": 22, "imposs": 10, "improv": [0, 31], "inbetween": 2, "includ": [0, 3, 4, 7, 8, 9, 10, 15, 17, 18, 20, 22, 26], "incomplet": 2, "incorpor": 22, "increas": [2, 21, 22], "incur": 3, "indent": 17, "index": [2, 4, 7, 12, 18, 25, 30, 31], "indexstart": 30, "indic": [2, 30], "individu": 2, "industri": [12, 22], "inequ": 31, "infbound": 31, "infeas": [0, 3, 14, 20, 28, 31], "infin": [0, 30], "inform": [0, 3, 6, 9, 10, 12, 15, 17, 18, 26, 30, 31], "infti": 30, "ingr": 0, "ingr_ingredientnam": 0, "ingr_mutton": 0, "ingredi": 0, "ingredient_var": 0, "ingredientslist": 17, "inherit": 8, "initi": [6, 9, 13, 17, 30, 31], "initialis": [30, 31], "input": [0, 3, 17, 30], "input_data": 2, "inputparameter1": 17, "inputparameter2": 17, "insid": [7, 9, 10, 17, 18, 30], "inspect": 12, "instal": [6, 8, 10, 15, 19, 31], "instanc": [17, 30, 31], "instanti": [11, 31], "instead": [2, 3, 12, 17, 22, 27], "instruct": [15, 18, 20], "int": [12, 17, 30, 31], "integ": [0, 2, 3, 12, 17, 19, 20, 28, 30, 31], "integr": [3, 7, 14], "intellig": 22, "intend": 17, "interact": 3, "interdepend": 22, "interestingli": 2, "interfac": [9, 12, 15, 29], "interior": [21, 22], "intermediari": 9, "intern": [3, 12, 15, 31], "internet": 17, "interpret": [20, 31], "interrupt": 31, "interv": 11, "intract": 1, "introduct": 15, "introductori": 2, "invalid": 22, "invers": 6, "invest": 22, "invit": 1, "involv": [9, 10, 22], "io": [18, 27], "isfix": 30, "isinst": 12, "isiter": 28, "ismip": 6, "issu": [7, 12, 14, 18], "isviol": 30, "item": [1, 4, 13, 30], "iter": [17, 30], "itpnod": 26, "its": [0, 3, 6, 9, 10, 11, 16, 30, 31], "itself": 30, "j": [1, 2, 3, 4, 12, 13, 17, 18], "jelli": 17, "jl": 31, "json": [9, 14, 30, 31], "jsonencod": 12, "juliabinarywrapp": 31, "jump": 3, "jupyt": 14, "just": [0, 2, 3, 6, 9, 13, 25, 31], "k": [1, 2, 12, 13, 30], "kean": 15, "keep": 9, "keepfil": [6, 9, 31], "kei": [0, 3, 17, 22, 28, 30, 31], "keyword": [17, 25, 30, 31], "knapsack": 31, "knew": 9, "know": [0, 3, 7, 9, 13], "knowledg": [0, 17], "known": [2, 4, 21, 22], "kwarg": [30, 31], "l": [1, 2, 12, 13], "la": 27, "labor": 4, "laid": 0, "lamb": 17, "languag": [10, 19, 20], "larg": [1, 2, 3], "last": [0, 3, 9], "later": [3, 4, 15], "latest": [18, 20, 31], "latter": 9, "launch": 10, "lb": [4, 25], "ld_library_path": 9, "ldot": 3, "le": [0, 4, 11], "lead": [0, 2, 3, 13], "learn": [7, 15, 17], "least": [0, 1, 3, 15, 31], "leav": [0, 3, 9], "left": [0, 11, 20], "len": [1, 13], "length": [17, 30], "lengthsdict": 17, "lenopt": 17, "less": 3, "let": [3, 22, 25], "letter": [1, 12, 13], "level": [6, 9, 17, 31], "lh": 30, "lib": 9, "librari": [9, 20, 31], "licens": [18, 20], "lift": [25, 31], "like": [0, 1, 3, 4, 9, 10, 17, 21, 25], "limit": [0, 3, 4, 22, 31], "line": [0, 2, 3, 6, 7, 9, 10, 17, 20, 27, 31], "linear": [0, 1, 2, 3, 18, 19, 22, 25, 30], "link": [7, 15, 17], "lint": 7, "linter": 8, "linux": [7, 9, 18, 31], "linux64": 9, "list": [0, 1, 2, 3, 4, 6, 9, 11, 12, 13, 15, 18, 20, 24, 30, 31], "listsolv": [9, 31], "littl": [0, 2, 9], "lluang": 4, "load": [9, 13, 20, 23, 31], "local": 18, "locat": [2, 6, 9, 20, 31], "log": [10, 15, 24, 31], "logfil": 31, "logic": [0, 2, 3, 4, 6, 22], "logpath": [10, 31], "long": [2, 3, 12, 17, 20, 22], "longer": [12, 17, 20], "look": [0, 3, 9, 10, 15, 17, 22], "lookalik": 31, "loop": [0, 2, 3, 19, 22], "loos": 3, "lose": [12, 27], "loss": 27, "lost": 3, "lot": [9, 12, 21], "loui": 4, "low": 31, "lowbound": [1, 4, 9, 12, 13, 30], "lower": [0, 3, 9, 13, 30], "lp": [0, 3, 4, 5, 6, 9, 10, 11, 15, 17, 18, 20, 30, 31], "lpaffineexpress": [20, 25, 30], "lparrai": 25, "lpbinari": [25, 28], "lpconstraint": [11, 18, 25, 28, 30], "lpconstrainteq": [28, 30], "lpconstraintg": [28, 30], "lpconstraintl": [28, 30], "lpconstraintsens": 28, "lpconstraintvar": [18, 30], "lpcontinu": [0, 28], "lpdot": 18, "lpelement": 30, "lpfractionconstraint": 30, "lpinteg": [0, 1, 3, 12, 13, 28], "lpmaxim": [0, 2, 4, 6, 28, 30], "lpminim": [0, 1, 2, 3, 9, 12, 13, 18, 25, 28, 30], "lpobjsens": 31, "lpproblem": [0, 1, 2, 3, 4, 6, 9, 11, 12, 13, 18, 25], "lpsens": 28, "lpsolut": 28, "lpsolutionintegerfeas": 28, "lpsolutionnosolutionfound": [6, 28], "lpsolutionoptim": 28, "lpsolutionstatusinfeas": 28, "lpsolutionstatusunbound": 28, "lpsolver": [6, 31], "lpsolver_cmd": [6, 31], "lpstatu": [0, 2, 4, 18, 28], "lpstatusinfeas": [6, 28], "lpstatusnotsolv": [6, 28], "lpstatusoptim": 28, "lpstatusunbound": 28, "lpstatusundefin": 28, "lpsum": [0, 1, 2, 3, 4, 12, 13, 18, 30], "lpvar": 31, "lpvarcategori": 31, "lpvariabl": [0, 1, 2, 3, 4, 9, 12, 13, 18, 20, 25, 30], "luangkesorn": 4, "lugerpitt": 4, "m": [1, 2, 7, 12, 13, 18], "mac": [7, 9], "machin": [4, 7, 9, 22], "made": [3, 12, 15, 24], "magic": 9, "magnitud": 11, "mai": [1, 2, 3, 4, 9, 10, 11, 12, 20, 21, 22, 30, 31], "main": [0, 6, 9, 10, 15, 30, 31], "mainli": 17, "make": [0, 1, 2, 3, 4, 8, 9, 10, 17, 18, 20, 22, 27, 30, 31], "makedict": 3, "makeelasticsubproblem": [11, 30], "maker": 4, "manag": 3, "mani": [2, 3, 4, 9, 12, 13, 22], "manipul": [15, 20, 24, 27], "manual": 9, "manufactur": 0, "mari": 31, "market": 4, "mason": 15, "match": [9, 15, 24], "materi": [4, 17], "mathbb": 3, "mathemat": [20, 21], "matrix": 26, "matrix_post": 26, "matter": 17, "max": [3, 4, 25, 31], "max_length": 30, "max_tabl": [1, 12, 13], "max_table_s": [1, 12, 13], "maxcardin": 30, "maxim": [4, 6, 20, 28], "maximis": [1, 2, 22], "maximum": [1, 3, 12, 13, 31], "maximum_number_of_t": [1, 12, 13], "maxmemori": 31, "maxnod": 31, "maxoneperbox": 25, "maxonepercol": 25, "maxoneperrow": 25, "maxoneperxi": 25, "mean": [0, 2, 9, 12, 22], "meaning": [2, 3, 4, 7], "meat": [0, 17], "meet": 0, "memori": [10, 31], "mention": 12, "menu": 20, "merx": 2, "messag": [7, 10, 13], "met": [0, 2, 3], "method": [0, 7, 8, 9, 11, 13, 21, 22, 30], "methodologi": 22, "michael": 15, "might": 2, "mike": 3, "min": [0, 3, 25], "mine": 9, "miner": 0, "minim": [3, 6, 11, 12, 28], "minimalist": 7, "minimis": [0, 2, 3, 22], "minimum": [3, 10], "minor": 21, "mip": [6, 9, 14, 20, 21, 26, 30, 31], "mip_start": [9, 31], "mipcl": [18, 31], "mipcl_api": 6, "mipcl_cmd": [6, 9, 31], "mipcl_cmdtest": 6, "mir": 26, "mitchel": [0, 1, 2, 3, 13, 15, 18, 31], "mix": [0, 17, 21], "mkstemp": 31, "mktemp": 31, "model": [0, 1, 2, 4, 5, 6, 9, 10, 13, 14, 15, 17, 18, 19, 20, 30, 31], "modif": [2, 31], "modifi": [6, 7, 13, 17, 30], "modul": [12, 17, 20, 31], "modulenotfounderror": 31, "modulu": 17, "mold": 4, "molding_dict": 4, "moment": 31, "monitor": [5, 22], "monoton": 31, "more": [0, 2, 3, 6, 9, 10, 17, 18, 22, 25, 28, 30, 31], "mosek": [9, 18, 31], "most": [9, 14, 15, 21, 26], "move": [16, 17], "mp": [6, 9, 10, 14, 18, 30, 31], "mps_mipcl": 6, "mpsfile": 10, "mpssens": [6, 30], "msg": [6, 9, 10, 13, 18, 31], "mst": 9, "much": [0, 2, 3, 4, 17], "multi": 31, "multipl": [2, 17, 31], "multipli": 0, "must": [0, 1, 2, 3, 4, 12, 13, 17, 18, 20, 21, 22, 31], "must_seat_": [1, 12, 13], "mutton": [0, 17], "my": 9, "mylist": 31, "myproblem": 18, "n": [1, 2, 12, 13, 25, 31], "name": [0, 2, 3, 4, 6, 7, 9, 12, 17, 18, 20, 25, 30, 31], "nathan": 2, "natur": [2, 3, 17], "navig": 20, "ndarrai": 12, "neat": 22, "necessari": [2, 9, 30], "need": [0, 2, 3, 6, 7, 9, 10, 12, 13, 15, 17, 20, 21, 22, 27], "neg": [0, 3, 22, 30], "neither": 2, "nest": 27, "net": 4, "never": [10, 22, 25], "nevertheless": 12, "new": [2, 3, 7, 8, 9, 12, 15, 17, 18, 22, 30], "newbegin": 17, "newbeginendstringov": 17, "newer": 18, "next": [0, 4, 9, 17, 22], "no_solution_status": 31, "node": [3, 26, 31], "nodeselect": 31, "nodesleft": 26, "non": [0, 1, 2, 3, 30], "nonam": 30, "none": [0, 2, 3, 6, 9, 12, 17, 26, 30, 31], "nonetheless": 10, "nonetyp": 31, "nonneg": 4, "nonprogramm": 17, "nonzero": 26, "nor": 2, "normal": [3, 17, 30], "notat": 4, "note": [0, 1, 2, 3, 4, 12, 20, 21, 28, 30], "notebook": 14, "notic": [0, 3], "now": [0, 3, 7, 9, 10, 12, 16, 17, 20, 31], "np": 12, "npencod": 12, "number": [0, 1, 2, 3, 10, 11, 12, 13, 17, 21, 22, 27, 30, 31], "numer": [20, 28, 30], "numpi": [14, 15, 24], "nutrient": 0, "nutrit": 0, "nz": 15, "o": [1, 3, 6, 12, 13, 15, 17, 31], "obj": [12, 28, 30], "object": [1, 4, 6, 9, 10, 11, 12, 17, 18, 20, 21, 22, 26, 30, 31], "objectivenam": 31, "observ": [17, 22], "obtain": [0, 20], "obviou": 2, "occur": [2, 4], "odd": 17, "offer": [9, 12], "offic": 3, "offici": [8, 14], "offset": 31, "often": [3, 10, 17, 21, 22], "ol": 26, "old": 10, "onc": [0, 2, 3, 9, 13, 17], "one": [0, 1, 2, 3, 4, 6, 7, 9, 10, 12, 13, 17, 21, 30], "onedigitpercel": 25, "ones": [7, 27], "ongo": 5, "onli": [1, 2, 3, 6, 7, 9, 12, 13, 17, 21, 23, 31], "onlyavail": [9, 31], "open": [0, 2, 6, 7, 9, 10, 18, 20, 22], "oper": [0, 2, 3, 6, 9, 10, 17, 22, 25, 27, 30], "operating_system": 31, "opportun": 22, "opt": 9, "optim": [0, 2, 3, 4, 13, 18, 20, 26, 28, 31], "optimis": [0, 4, 15, 19, 20], "optimum": [0, 4], "option": [0, 2, 3, 6, 9, 30, 31], "ord": [1, 12, 13], "order": [2, 3, 4, 7, 9, 13, 15, 17, 30, 31], "ordereddict": 30, "organ": 6, "orgset": 30, "orient": 0, "origin": [3, 7, 12, 22], "orlog": [15, 24], "osi": 31, "osx": 18, "other": [0, 1, 2, 3, 4, 6, 9, 10, 12, 18, 19, 20, 22, 30, 31], "otherwis": [1, 6, 9, 18, 31], "our": [0, 2, 3, 4, 12, 13, 22], "out": [0, 1, 2, 3, 4, 10, 13, 26], "outlin": 0, "output": [0, 4, 12, 17, 20, 26, 30], "over": [2, 9, 12], "overal": 2, "overflow": 10, "overlap": 2, "oversuppli": 3, "overwritten": [2, 9], "own": [2, 9, 10, 16, 17], "p": [1, 4, 12, 13], "p_": 4, "pack": 1, "packag": [4, 7, 9, 12, 16, 20, 31], "page": [2, 7, 10, 18], "pai": 22, "pair": [2, 31], "panda": [14, 26, 27], "param": 31, "paramet": [0, 3, 4, 10, 12, 17, 23, 30, 31], "parcial": 13, "parent": 6, "parenthes": 17, "pars": 12, "parse_object": 31, "parse_statu": 31, "parse_vari": 31, "parser": [15, 24, 31], "part": 30, "particular": [2, 6, 10, 22], "partit": [5, 12, 13, 15], "pass": [0, 6, 7, 9, 10, 12, 13, 17, 20, 31], "patch": 18, "path": [3, 6, 10, 14, 20, 31], "path_to_cbc": 10, "path_to_cplex": 9, "pathlik": 31, "pattern": 17, "patterna": 17, "pc": [9, 10], "pchtsp": [7, 15, 26, 27], "penalti": [3, 11, 20, 30], "penalty_valu": 11, "per": [0, 2, 3, 4, 6, 14, 22], "percent": 0, "percentag": 0, "percentagessum": 0, "perfect": 17, "perform": [0, 13, 17, 31], "period": [4, 22], "permiss": 10, "permit": [6, 9, 12, 13, 27], "person": 22, "peschiera": [13, 15], "phillip": [0, 2, 3, 15], "pi": 12, "pip": [7, 18], "pipe": 6, "pl": 9, "place": [2, 17], "plain": 7, "plan": [5, 15], "planner": 1, "platform": [9, 31], "pleas": [20, 31], "plenti": 9, "plier": 4, "plierearn": 4, "plu": 2, "plugin": 15, "point": [11, 21, 22, 31], "pointer": [6, 10, 31], "popul": 22, "posit": [0, 17, 30], "possibl": [0, 1, 3, 4, 9, 10, 12, 13, 22, 31], "possible_t": [1, 12, 13], "post": 10, "power": 25, "pp": 25, "pr": [7, 10], "practic": 6, "precis": 10, "precompil": 31, "prefer": [2, 9], "prefix": [30, 31], "prepar": 31, "present": [2, 4, 5, 13], "presolv": [26, 31], "previou": [0, 3, 9, 12, 13], "previous": [3, 13, 31], "price": [4, 9, 12, 30], "price_dict": 4, "priceitem": 4, "pricescenario": 4, "primal": 21, "prime": 17, "principl": 17, "print": [0, 1, 2, 4, 9, 13, 17, 25, 30], "prob": [0, 2, 3, 9, 10, 12, 18, 25, 31], "prob1": 12, "probabl": [4, 9], "probe": 31, "problem": [5, 6, 9, 12, 14, 15, 17, 18, 20, 21, 30, 31], "procedur": 9, "process": [15, 19, 21], "produc": [0, 3, 4, 10], "product": [0, 3, 5, 15], "production_var": 4, "profil": 9, "profit": [4, 22], "program": [0, 1, 2, 3, 9, 10, 17, 18, 19, 20], "programm": [3, 17], "progress": 26, "project": [8, 10, 22], "prompt": [17, 20], "properti": [0, 6], "proport": [11, 30], "proportionfreebound": [11, 30], "proportionfreeboundlist": [11, 30], "protein": 0, "proteinperc": 0, "proteinrequir": 0, "provid": [2, 12, 15, 22, 26, 27, 31], "pscenario": 4, "pt": 17, "pub": 3, "pull": [8, 18], "pulp": [0, 1, 2, 4, 5, 8, 10, 13, 14, 17, 19, 22, 24, 27], "pulp_cbc_cmd": [9, 10, 13, 20, 31], "pulp_cbc_path": 31, "pulp_lparrai": [15, 24], "pulperror": [28, 31], "pulpsolvererror": [6, 10, 31], "pulptest": [6, 18, 20], "pulptestal": 20, "punch": 31, "purchas": [3, 4], "purpos": 0, "push": [7, 20], "put": [2, 3, 10, 22], "put_some_alternative_path_her": 9, "puzzl": 25, "py": [0, 1, 2, 3, 4, 6, 7, 9, 17, 20], "pydev": 20, "pyglpk": [9, 20, 31], "pypi": [10, 18], "python": [0, 3, 7, 9, 10, 12, 15, 18, 19, 20, 22, 23, 26, 28, 31], "python3": [7, 9], "python32": 10, "python34": 20, "python64": 10, "python_path": 9, "pythonpath": 9, "pyton": 27, "pytup": [15, 24], "q": [1, 12, 13], "qdbp": 25, "quantifi": 22, "quantiti": 0, "queri": 9, "question": [9, 10], "quick": 7, "quickest": 7, "quit": 9, "quot": 31, "quote_path": 31, "r": [1, 2, 4, 7, 9, 12, 13, 18, 25, 30], "rai": 9, "rais": [6, 30, 31], "random": [9, 31], "rang": [2, 17, 30], "re": [7, 9, 10, 12, 20], "reach": 31, "read": [2, 3, 4, 9, 12, 15, 31], "readabl": 27, "readm": [15, 19], "readsol": [6, 31], "readsol_lp": 31, "readsol_mp": 31, "real": [11, 17, 21], "realist": 3, "realli": [2, 9, 12], "reason": [9, 12, 21], "reasonn": 31, "rebuild": 7, "recent": 10, "recomend": 9, "recommend": [10, 15, 18], "reconstruct": 12, "reduc": [3, 9, 12], "reducedcost": 31, "reelastic": 30, "refer": [0, 3, 4, 17, 31], "referenc": [0, 3], "reflect": [22, 30], "regard": 10, "rel": [22, 31], "relat": [1, 2, 30, 31], "relax": [6, 20], "releas": 31, "relev": [15, 17, 22, 30], "remaind": 17, "remov": [2, 6], "renam": 30, "repeat": [0, 20], "replac": [7, 11], "repo": 7, "report": [6, 10, 18, 20, 26], "repositori": 7, "repres": [0, 2, 4, 17, 30], "represent": 3, "reproduc": 10, "request": [0, 8], "requir": [0, 3, 6, 7, 9, 17, 18, 20, 25], "research": [21, 22], "reset": 30, "reshap": 25, "resolv": [0, 3, 4, 30, 31], "resourc": 4, "respect": [0, 2, 3, 27, 30], "rest": [0, 2, 3], "restart": 31, "restor": 12, "restrict": 22, "restructuredtext": 7, "result": [0, 2, 7, 9, 12, 17], "return": [0, 1, 2, 3, 6, 9, 11, 12, 13, 17, 20, 28, 30, 31], "return_cod": 6, "reus": 13, "revenu": [4, 22], "revis": [21, 22], "rh": [11, 30], "rice": [0, 17], "right": [0, 9, 11], "rigour": 22, "rise": 3, "robust": 22, "roi": 18, "root": [18, 20], "roottim": 26, "round": [10, 17, 30, 31], "roundsolut": 30, "rout": 3, "route_a_2": 3, "route_tupl": 3, "routea1": 3, "routeb5": 3, "row": [2, 26], "rule": 2, "run": [0, 3, 8, 9, 10, 13, 18, 20, 22], "run_test": 7, "runner": 31, "s_w": 3, "safe": 9, "sai": 2, "sake": 9, "sale": 3, "salt": 0, "saltperc": 0, "saltrequir": 0, "same": [0, 2, 3, 9, 10, 12, 13, 17, 22, 30, 31], "satisfi": [2, 3, 7], "save": [3, 7, 12, 31], "scale": 3, "scenario": 4, "schedul": 3, "scip": [9, 18, 31], "scip_cmd": [9, 31], "scip_pi": [9, 31], "scip_status": 31, "scratch": 17, "screen": [0, 2, 4], "script": [1, 20], "search": 31, "seat": [1, 12, 13], "seating_model": [1, 12, 13], "second": [0, 3, 6, 9, 31], "section": [0, 6, 9, 12, 17], "see": [0, 3, 9, 10, 12, 13, 15, 18, 25, 31], "seem": 2, "seen": [0, 6, 10, 12], "self": [6, 12, 17, 28, 30, 31], "send": [3, 7], "sens": [6, 11, 12, 22, 28, 30], "sensedict": 31, "sent": 3, "separ": 0, "sequenc": 17, "seri": 9, "session": [9, 10], "set": [0, 2, 3, 4, 5, 6, 9, 12, 13, 15, 22, 23, 25, 28, 30, 31], "setconfiginform": 31, "setinitialvalu": [13, 30], "setobject": 30, "settmpdir": 31, "setup": [7, 9, 20], "sever": [2, 3, 9, 10, 12, 17, 26], "shadow": [12, 30], "shadowpric": 31, "shall": 3, "share": [10, 31], "she": 3, "shell": 31, "ship": 3, "shipment": 3, "short": [0, 17], "shortcut": 22, "shorten": 27, "should": [0, 2, 3, 7, 9, 20, 22, 31], "show": [0, 3, 7, 9, 17, 31], "shown": [0, 2, 3, 9, 12, 17, 22, 31], "side": [11, 30], "sign": [0, 30], "signific": 0, "significantli": 22, "silent_remov": 31, "similar": [2, 7, 9, 12, 17, 20, 31], "similarli": 3, "simpl": [0, 3, 9, 12, 17, 22], "simplest": 21, "simplex": [21, 22], "simpli": [0, 2, 3, 17], "simplif": 22, "sinc": [0, 2, 3, 9, 10, 21], "singl": 2, "site": [10, 20, 23, 25, 26, 27], "situat": [2, 3, 10, 22], "size": [12, 21], "slack": [10, 20, 31], "slx": 31, "small": [0, 3], "smaller": [1, 2], "smallest": 6, "smart": [15, 24], "so": [0, 2, 3, 4, 7, 9, 10, 12, 13, 15, 17, 22, 30, 31], "softwar": [0, 20, 22], "sol": [6, 9], "sol_cod": 26, "sol_statu": [12, 31], "solfil": 6, "solut": [1, 4, 5, 6, 9, 10, 12, 13, 18, 20, 21, 26, 28, 30, 31], "solution_styl": 31, "solutionn": 31, "solutionstatu": 6, "solv": [0, 1, 2, 3, 4, 6, 9, 12, 13, 14, 15, 18, 20, 21, 25, 28, 30, 31], "solve_cbc": 31, "solveinst": 6, "solver": [0, 2, 4, 7, 8, 10, 14, 15, 18, 20, 21, 22, 26, 28, 29, 30], "solver_dict": 9, "solver_list": 9, "solverconstraint": 31, "solverdir": 31, "solvermodel": [6, 9, 31], "solvervar": 31, "some": [6, 7, 9, 10, 11, 12, 13, 17, 21, 30, 31], "some_file_nam": 9, "some_modified_fil": 7, "some_mst_fil": 9, "someon": [0, 31], "someth": [9, 10, 28], "sometim": [3, 9, 10, 22], "somewher": [3, 9], "sorri": 9, "sort": [22, 30], "sorted_kei": 30, "sos1": 12, "sos2": 12, "sourc": [3, 8, 31], "sovler": 18, "special": [10, 25], "specif": [0, 4, 10, 17, 23, 30], "specifi": [0, 1, 2, 3, 4, 11, 12, 13, 17, 21, 30, 31], "spend": 22, "sphinx": [7, 18], "split": [1, 6, 12, 13], "spongerol": 17, "squar": [0, 2, 17], "stack": 10, "stackoverflow": 10, "stage": [5, 15], "stakehold": 22, "stall": 31, "stand": 20, "standard": [0, 6, 12, 26], "start": [0, 2, 3, 14, 15, 17, 20, 22, 31], "state": [0, 1, 12, 13], "statement": [0, 2, 3, 23], "static": 31, "statu": [0, 2, 4, 6, 7, 9, 12, 18, 26, 28, 30, 31], "status_cod": 26, "status_sol": 6, "stderr": 6, "stdout": 6, "steel": 4, "steel_dict": 4, "steelpric": 4, "steelpurchas": 4, "step": [0, 7, 9, 11, 17, 22], "still": [0, 1, 2, 3, 12], "stock": 3, "stop": [17, 31], "store": [3, 6, 9, 12, 17], "str": [2, 4, 30, 31], "strateg": 22, "strategi": 31, "strict": 12, "strictli": 2, "string": [0, 17, 28, 30, 31], "string_append": 17, "stringov": 17, "strong": 31, "structur": [3, 6, 9, 12, 17, 23], "stuart": [0, 1, 2, 3, 13, 15, 18, 31], "studi": [1, 4, 15], "stuff": 0, "style": 7, "sub": 3, "subclass": 11, "subject": [4, 12], "sublist": 4, "submit": [7, 10], "subproblem": 30, "subprocess": [6, 31], "subsequ": 22, "subset": [1, 23, 30], "substitut": 3, "subtract": [20, 30], "success": [2, 30, 31], "successfulli": [0, 7], "sudden": 2, "sudermann": 2, "sudo": [9, 18, 20], "sudoku": [5, 15, 25], "sudoku1": 2, "sudoku2": 2, "sudokuout": 2, "suffici": 10, "suffix": 31, "suggest": [0, 18, 22], "suit": [8, 31], "suitabl": [20, 30, 31], "sullivan": [3, 15], "sum": [0, 2, 3, 17, 25, 30], "sum_": [3, 4, 30], "sum_of_products_into_bar": 3, "sum_of_products_out_of_warehouse_": 3, "sum_of_transporting_cost": 3, "summar": 9, "summari": [3, 7, 22], "summat": 4, "super": 12, "superdict": 27, "supersudoku": 25, "suppli": 3, "support": [10, 14, 17, 23, 25, 26, 30, 31], "suppos": 3, "sure": [0, 3, 7, 9, 20, 22], "swap": 6, "symbol": [17, 28], "symmetr": 11, "syntax": 23, "system": [6, 7, 9, 10, 18], "t": [2, 3, 4, 21, 22], "tabl": [0, 1, 2, 3, 12, 13], "table_": 12, "tactic": 22, "tag": 10, "tail": 17, "take": [0, 2, 3, 6, 10, 12, 22, 31], "taken": [4, 10, 12, 13], "talk": [3, 9, 22], "target": [11, 30], "tb": 28, "tcl": 31, "team": 15, "techniqu": 22, "tell": [3, 9], "temp": 9, "temporari": [14, 31], "term": [22, 30], "termin": 18, "test": [0, 8, 12, 18, 19, 26, 31], "test_export_dict_mip": 12, "test_pulp": [6, 7], "testlist": 17, "text": [0, 2, 9, 10, 31], "textbf": 0, "textsf": 30, "than": [0, 2, 3, 6, 9], "thei": [0, 3, 6, 9, 17, 18, 21, 22, 27], "them": [0, 2, 3, 9, 10, 12, 17, 18], "therefor": 2, "thi": [0, 1, 2, 3, 4, 6, 7, 9, 10, 12, 13, 15, 17, 20, 22, 28, 30, 31], "thing": [6, 9, 10, 31], "third": [0, 2], "those": [2, 3, 4, 9, 13], "though": [1, 12], "thread": 31, "three": 30, "through": [0, 3, 7, 17, 20, 22], "throughout": 17, "thu": [0, 2, 10], "tidi": 22, "time": [0, 2, 3, 6, 7, 12, 20, 21, 22, 26, 31], "timelimit": [6, 9, 31], "timemod": 31, "titl": 4, "tmp": [9, 31], "tmpdir": [9, 31], "tmpmp": 6, "tmpsol": 6, "to_dict": [12, 30, 31], "to_json": [12, 31], "to_str": 31, "todict": [9, 30, 31], "togeth": 17, "tojson": [9, 30, 31], "told": 17, "toler": 31, "tolist": 12, "ton": 27, "too": [12, 22], "tool": [4, 31], "top": [7, 17, 31], "topic": 15, "total": [0, 1, 3, 4, 13, 22, 31], "totalcost": 3, "totalrolllength": 17, "trace": 9, "transform": [12, 27], "translat": [22, 31], "transport": [5, 15], "tree": 31, "trick": 25, "trim": 17, "trimvalu": 17, "truck": 3, "true": [2, 6, 9, 10, 13, 17, 21, 30, 31], "try": [0, 2, 6, 9, 14, 17], "tupl": [1, 2, 3, 12, 13, 15, 24, 30, 31], "tuplist": 27, "turn": [3, 13, 17], "tweak": 31, "two": [0, 3, 5, 6, 7, 9, 10, 11, 12, 13, 15, 18, 27], "two_stage_stochastic_gemstonetool": 4, "txt": [2, 7, 18], "type": [0, 11, 14, 19, 20, 21, 25, 30, 31], "typeerror": 31, "typic": [9, 22], "u": [0, 3, 18], "ub": 25, "ub_p": 4, "ub_w": 4, "ujson": [9, 12], "unavail": 20, "unbalanc": 3, "unbound": [0, 20, 28, 31], "uncertainti": [4, 22], "unchang": 20, "uncl": 0, "unconstrain": 25, "undefin": [0, 28], "under": [17, 22, 25], "understand": [10, 17, 22], "understood": 22, "undetermin": 30, "undo": 6, "unfortun": 12, "uniqu": [2, 12, 31], "unit": [0, 3, 4, 22], "unknown": [4, 17, 31], "unlik": 17, "unsaf": 31, "until": [9, 17], "up": [0, 3, 12, 17, 22, 30], "upbound": [0, 1, 12, 13, 30], "updat": [3, 17, 22], "upper": [0, 3, 30], "upperbound": 13, "us": [0, 1, 2, 3, 4, 6, 7, 10, 12, 13, 14, 15, 17, 18, 20, 21, 22, 25, 26, 27, 30, 31], "usabl": [17, 31], "use_mp": 31, "user": [2, 9, 10, 15, 17, 31], "usernam": 7, "usual": [0, 3, 4, 6, 9, 10, 13, 22], "util": 20, "uuid": 31, "uuid4": 31, "v": [0, 2, 4, 10, 13, 31], "val": [2, 30], "valid": [13, 22], "valu": [0, 1, 2, 3, 4, 6, 9, 10, 11, 12, 14, 17, 18, 21, 22, 25, 28, 30, 31], "valueerror": 30, "var": [3, 31], "var1": 12, "vari": [0, 9, 30], "variabl": [1, 4, 6, 10, 14, 17, 18, 20, 21, 22, 25, 26, 31], "variablesnam": 31, "variou": 22, "varvalu": [0, 4, 12, 30], "ve": [9, 13, 30], "vector": [4, 30], "venv": 7, "veri": [0, 2, 3, 7, 9, 10, 12, 21, 27], "versa": 27, "version": [7, 9, 10, 13, 18, 20, 26, 31], "via": [9, 10, 13, 18, 21, 22, 31], "vice": 27, "video": 10, "violat": 30, "virtual": [7, 18], "vitamin": 0, "w": [2, 3, 4, 6], "w_": 4, "wa": [2, 3, 9, 10, 17, 30, 31], "wai": [0, 1, 2, 3, 6, 7, 9, 10, 12, 17, 18, 20, 21, 22], "wall": 31, "want": [0, 7, 9, 10, 13, 18, 22], "warehous": 3, "warm": [14, 15, 31], "warmstart": [9, 13, 30, 31], "warn": 6, "wast": 2, "water": 17, "we": [0, 1, 2, 3, 4, 6, 7, 9, 12, 13, 15, 18, 21, 22, 30], "websit": 17, "wed": [1, 13], "wedding_model": 12, "wedding_seating_model": 12, "wedding_var": 12, "week": [3, 22], "weight": 0, "welcom": 18, "well": [2, 6, 17, 22, 31], "were": [0, 2, 3, 17], "what": [0, 7, 10, 14, 17, 20, 22], "whatev": 9, "wheat": 0, "when": [0, 2, 3, 6, 7, 9, 10, 12, 13, 17, 31], "where": [2, 3, 11, 13, 14, 20, 21, 30, 31], "wherea": [2, 17], "wherebi": 17, "whether": [2, 31], "which": [0, 2, 3, 4, 7, 11, 14, 17, 18, 21, 22, 30, 31], "while": [0, 2, 4, 6, 13, 14, 21], "whilst": [0, 2, 3], "whiska": [0, 3], "whiskasmodel": 0, "whiskasmodel1": 0, "whiskasmodel2": 0, "who": 22, "whole": [0, 3, 7, 14, 26], "why": 22, "wide": 25, "wikipedia": [2, 17], "wil": 7, "willu47": [16, 23], "window": [7, 9, 18], "wise": 18, "wish": [0, 1], "with_objsens": 30, "with_traceback": 28, "within": [2, 4, 22], "without": [1, 17, 27, 30], "won": 21, "word": 17, "work": [9, 10, 12, 13, 17, 20, 22, 31], "would": [0, 1, 2, 3, 4, 9, 13, 17, 20, 22, 31], "wrap": 31, "wrench": 4, "wrenchearn": 4, "write": [0, 2, 7, 14, 17, 20, 30, 31], "writelp": [0, 2, 3, 4, 10, 11, 30], "writemp": [6, 10, 12, 30], "writemst": 31, "writeslxsol": 31, "writeso": 30, "writesol": 31, "written": [0, 2, 4, 9, 11, 12, 18, 20, 31], "www": 31, "x": [0, 1, 9, 11, 12, 13, 15, 17, 18, 24, 26, 30, 31], "x1": [0, 18], "x2": [0, 18], "x64_win64": 9, "x86": 9, "x_": 3, "x_0": 30, "x_1": [0, 21, 30], "x_2": [0, 21, 30], "x_3": [0, 21], "x_4": 0, "x_5": 0, "x_6": 0, "x_i": [21, 30], "x_n": 21, "x_name": 30, "xn": 18, "xpress": [9, 13, 18, 20, 31], "xpress_cmd": 31, "xpress_pi": [9, 13, 31], "y": [12, 18, 25, 30], "yaposib": [20, 31], "year": 10, "yet": 13, "you": [0, 2, 3, 7, 9, 10, 12, 13, 15, 17, 18, 20, 21, 22, 23, 31], "your": [0, 3, 6, 7, 9, 10, 17, 18, 19, 21, 22, 25, 31], "yourself": 0, "z": [3, 12], "zero": [0, 1, 3, 17, 20, 30], "zip": [4, 17], "zipfil": 20, "\u00e0": 27}, "titles": ["A Blending Problem", "A Set Partitioning Problem", "A Sudoku Problem formulated as an LP", "A Transportation Problem", "A Two Stage Production Planning Problem", "Case Studies", "How to add a new solver to PuLP", "How to contribute to PuLP", "Developer Guides", "How to configure a solver in PuLP", "How to debug most errors during solving", "Elastic Constraints", "How to import and export models in PuLP", "How to warm-start a solver", "User Guides", "Optimization with PuLP", "Amply", "Basic Python Coding", "pulp", "Main Topics", "Installing PuLP at Home", "Optimisation Concepts", "The Optimisation Process", "amply: AMPL data manipulation", "Plugins", "PuLP_LPARRAY: PuLP x NumPy, a match made in heaven", "orloge: OR logs parser", "pytups: smart dictionaries and tuple lists", "pulp.constants", "PuLP Internal Documentation", "pulp: Pulp classes", "pulp.apis Interface to Solvers"], "titleterms": {"1": 12, "2": 12, "A": [0, 1, 2, 3, 4], "In": 3, "OR": 26, "The": [0, 17, 22, 30], "access": 9, "activ": 13, "actualsolv": 6, "ad": 6, "add": 6, "addit": 9, "ampl": 23, "ampli": [16, 23], "an": [2, 9], "anaconda": 10, "analysi": [3, 22], "api": [6, 9, 13, 31], "appli": 7, "arrai": 17, "ask": 10, "author": 15, "avail": 6, "base": 6, "basic": 17, "black": 7, "blend": 0, "bui": 3, "build": [7, 18], "case": 5, "caveat": 12, "cbc": 10, "check": 9, "class": [6, 17, 30], "clone": 7, "cmd": 9, "code": 17, "combin": 30, "comment": 17, "comprehens": 17, "concept": 21, "conda": 10, "configur": 9, "consider": 12, "constant": 28, "constraint": [0, 2, 3, 11, 30], "contribut": 7, "cplex": 9, "cplex_pi": 9, "creat": 7, "data": [12, 23], "debug": 10, "decis": [0, 2, 3], "defaultpath": 6, "descript": [0, 2, 3, 22], "develop": 8, "dictionari": [17, 27], "document": [7, 18, 29], "dure": 10, "elast": 11, "environ": 9, "error": 10, "ex": 10, "exampl": [6, 12, 13, 18], "execut": 10, "expert": 2, "export": [9, 12], "express": 30, "extens": 3, "extra": [2, 6], "featur": 17, "feedback": 10, "file": 9, "fill": 13, "fix": 13, "fork": 7, "formatt": 7, "formul": [0, 2, 3, 22], "from": [7, 20], "full": 0, "function": [0, 2, 3, 9, 17], "get": 22, "give": 10, "group": 12, "guid": [8, 14], "gurobi": 9, "ha": 9, "heaven": 25, "help": 10, "home": 20, "how": [6, 7, 9, 10, 12, 13], "i": 9, "identifi": [0, 2, 3], "import": [9, 12, 17], "includ": 6, "infeas": 10, "inherit": 6, "instal": [7, 9, 18, 20], "integ": 21, "integr": 9, "interfac": 31, "intern": 29, "issu": 10, "json": 12, "jupyt": 10, "languag": 17, "linear": 21, "linter": 7, "linux": 20, "list": [17, 27], "log": 26, "loop": 17, "lp": 2, "lpproblem": 30, "made": 25, "main": 19, "make": [6, 7], "manipul": 23, "match": 25, "mathemat": 22, "method": 6, "mip": 13, "model": [3, 12, 22], "monitor": 3, "most": 10, "mp": 12, "new": 6, "note": 17, "notebook": 10, "numpi": [12, 25], "object": [0, 2, 3], "offici": [6, 9], "ongo": 3, "optim": [15, 22], "optimis": [21, 22], "orlog": 26, "other": 17, "panda": 12, "parser": 26, "partit": 1, "path": 9, "per": 9, "perform": 22, "permut": 30, "pip": 20, "plan": 4, "plugin": 24, "post": 22, "present": [3, 22], "problem": [0, 1, 2, 3, 4, 10, 13, 22], "process": 22, "product": 4, "program": [21, 22], "project": 7, "pull": 7, "pulp": [3, 6, 7, 9, 12, 15, 18, 20, 25, 28, 29, 30, 31], "pulp_lparrai": 25, "pypi": 20, "python": 17, "pytup": 27, "request": 7, "run": 7, "set": 1, "simplifi": 0, "smart": 27, "solut": [0, 2, 3, 22], "solv": [10, 22], "solver": [6, 9, 13, 31], "some": 22, "sourc": [7, 20], "specif": 9, "stage": 4, "start": 13, "statement": 17, "storag": 3, "studi": 5, "sudoku": 2, "suit": 6, "support": 13, "syntax": 17, "temporari": 9, "test": [6, 7, 20], "todo": 30, "topic": 19, "transport": 3, "try": 10, "tupl": [17, 27], "two": 4, "type": [9, 12, 17], "us": 9, "user": 14, "valid": 3, "valu": 13, "variabl": [0, 2, 3, 9, 12, 13, 30], "warm": 13, "what": 9, "where": 9, "which": 9, "while": [10, 17], "whole": 13, "window": 20, "write": 9, "x": 25, "your": 20}}) \ No newline at end of file diff --git a/technical/constants.html b/technical/constants.html index dc506d70..539c5510 100644 --- a/technical/constants.html +++ b/technical/constants.html @@ -16,7 +16,7 @@ - + diff --git a/technical/index.html b/technical/index.html index ef03e0ac..9a731b90 100644 --- a/technical/index.html +++ b/technical/index.html @@ -16,8 +16,9 @@ - + + diff --git a/technical/pulp.html b/technical/pulp.html index 204dbc18..b3d5a531 100644 --- a/technical/pulp.html +++ b/technical/pulp.html @@ -16,7 +16,7 @@ - + @@ -267,7 +267,7 @@

The LpProblem ClassParameters:
  • filename (str) – name of the file to write

  • -
  • mpsSense (int) –

  • +
  • mpsSense (int)

  • rename (bool) – if True, normalized names are used for variables and constraints

  • mip – variables and variable renames

diff --git a/technical/solvers.html b/technical/solvers.html index 57aa8c4f..c0b4911e 100644 --- a/technical/solvers.html +++ b/technical/solvers.html @@ -16,7 +16,7 @@ - + @@ -394,9 +394,9 @@
  • epgap – The fractional mip tolerance

  • mip (bool) – if False, assume LP even if integer variables

  • msg (bool) – if False, no log is shown

  • -
  • options (list) –

  • +
  • options (list)

  • timeLimit – maximum time for solver (in seconds)

  • -
  • args

  • +
  • args

  • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,

  • @@ -534,9 +534,9 @@
    • mip (bool) – if False, assume LP even if integer variables

    • msg (bool) – if False, no log is shown

    • -
    • options (list) –

    • +
    • options (list)

    • timeLimit (float) – maximum time for solver (in seconds)

    • -
    • args

    • +
    • args

    • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,

    @@ -616,9 +616,9 @@
    • mip (bool) – if False, assume LP even if integer variables

    • msg (bool) – if False, no log is shown

    • -
    • options (list) –

    • +
    • options (list)

    • timeLimit (float) – maximum time for solver (in seconds)

    • -
    • args

    • +
    • args

    • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,

    @@ -739,9 +739,9 @@
    • mip (bool) – if False, assume LP even if integer variables

    • msg (bool) – if False, no log is shown

    • -
    • options (list) –

    • +
    • options (list)

    • timeLimit (float) – maximum time for solver (in seconds)

    • -
    • args

    • +
    • args

    • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,

    @@ -920,9 +920,9 @@
    • mip (bool) – if False, assume LP even if integer variables

    • msg (bool) – if False, no log is shown

    • -
    • options (list) –

    • +
    • options (list)

    • timeLimit (float) – maximum time for solver (in seconds)

    • -
    • args

    • +
    • args

    • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,

    @@ -1024,9 +1024,9 @@
    • mip (bool) – if False, assume LP even if integer variables

    • msg (bool) – if False, no log is shown

    • -
    • options (list) –

    • +
    • options (list)

    • timeLimit (float) – maximum time for solver (in seconds)

    • -
    • args

    • +
    • args

    • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,

    @@ -1124,9 +1124,9 @@
    • mip (bool) – if False, assume LP even if integer variables

    • msg (bool) – if False, no log is shown

    • -
    • options (list) –

    • +
    • options (list)

    • timeLimit (float) – maximum time for solver (in seconds)

    • -
    • args

    • +
    • args

    • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,

    @@ -1327,9 +1327,9 @@
    • mip (bool) – if False, assume LP even if integer variables

    • msg (bool) – if False, no log is shown

    • -
    • options (list) –

    • +
    • options (list)

    • timeLimit (float) – maximum time for solver (in seconds)

    • -
    • args

    • +
    • args

    • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,

    @@ -1407,9 +1407,9 @@
    • mip (bool) – if False, assume LP even if integer variables

    • msg (bool) – if False, no log is shown

    • -
    • options (list) –

    • +
    • options (list)

    • timeLimit (float) – maximum time for solver (in seconds)

    • -
    • args

    • +
    • args

    • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,

    @@ -1529,9 +1529,9 @@
    • mip (bool) – if False, assume LP even if integer variables

    • msg (bool) – if False, no log is shown

    • -
    • options (list) –

    • +
    • options (list)

    • timeLimit (float) – maximum time for solver (in seconds)

    • -
    • args

    • +
    • args

    • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,

    @@ -1739,9 +1739,9 @@
    • mip (bool) – if False, assume LP even if integer variables

    • msg (bool) – if False, no log is shown

    • -
    • options (list) –

    • +
    • options (list)

    • timeLimit (float) – maximum time for solver (in seconds)

    • -
    • args

    • +
    • args

    • kwargs – optional named options to pass to each solver, e.g. gapRel=0.1, gapAbs=10, logPath=””,