# Difference between revisions of "ApCoCoA-1:GLPK.MIPSolve"

("Corrected" example) |
m (replaced <quotes> tag by real quotes) |
||

(15 intermediate revisions by 7 users not shown) | |||

Line 1: | Line 1: | ||

+ | {{Version|1}} | ||

<command> | <command> | ||

− | <title> | + | <title>GLPK.MIPSolve</title> |

− | <short_description> | + | <short_description>Solving linear programmes.</short_description> |

<syntax> | <syntax> | ||

− | GLPK.MIPSolve(Objective_f: | + | GLPK.MIPSolve(Objective_f:POLY, EQ_Poly:LIST, LE_Poly:LIST, GE_Poly:LIST, Bounds:LIST, IntNum:LIST, Binaries:LIST, MinMax:STRING) |

</syntax> | </syntax> | ||

<description> | <description> | ||

− | + | <em>Please note:</em> The function(s) explained on this page is/are using the <em>ApCoCoAServer</em>. You will have to start the ApCoCoAServer in order to use it/them. | |

− | <em>Objective_f</em>: A linear polynomial which is equivalent to the linear objective function. | + | <itemize> |

+ | <item>@param <em>Objective_f</em>: A linear polynomial which is equivalent to the linear objective function.</item> | ||

+ | <item>@param <em>EQ_Poly</em>: List of linear polynomials, which are equivalent to the equality-part in the list of conditions.</item> | ||

+ | <item>@param <em>LE_Poly</em>: List of linear polynomials, which are equivalent to the lower or equal-part in the list of conditions.</item> | ||

+ | <item>@param <em>GE_Poly</em>: List of linear polynomials, which are equivalent to the greater or equal-part in the list of conditions.</item> | ||

+ | <item>@param <em>Bounds</em>: List of lists with two elements. Each List contains the lower and upper bounds for each variable. You can choose between INT or RAT for the type of each bound, if you type in a (empty) string, then it means minus infinity (first place) or plus infinity (second place).</item> | ||

+ | <item>@param <em>IntNum</em>: List of variables, which should be integer. <em>Note</em>: For each variable in this list, the borders get rounded (lower bound: up and upper bound: down). In the case that the lower rounded bound becomes greater then the upper rounded bound, glpk returns: Solution Status: INTEGER UNDEFINED - Value of objective function: 0.</item> | ||

+ | <item>@param <em>Binaries</em>: List of variables, which should be binaries (0 or 1).</item> | ||

+ | <item>@param <em>MinMax</em>: Minimization ("Min") or maximization ("Max"), that's the question.</item> | ||

+ | <item>@return List of linear polynomials, the zeros of the polynomials are the points where the optimal value of the objective function is achieved</item> | ||

+ | </itemize> | ||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

<example> | <example> | ||

− | We want to maximize the Function y = - 1/2x, | + | -- We want to maximize the Function y = - 1/2x, |

− | with the two conditions y ≤ 6 - 3/4x and y ≥ 1 - x and the bounds 0 ≤ x ≤ 6 and 1/3 ≤ y ≤ 4. | + | -- with the two conditions y ≤ 6 - 3/4x and y ≥ 1 - x and the bounds 0 ≤ x ≤ 6 and 1/3 ≤ y ≤ 4. |

− | We prename the input of GLPK.MIPSolve-function. | + | -- We prename the input of GLPK.MIPSolve-function. |

− | Use S::= | + | Use S::=QQ[x,y]; |

OF := 1/2x + y; | OF := 1/2x + y; | ||

− | LE := 3/4x + y - 6; | + | LE := [3/4x + y - 6]; |

− | GE := x + y - 1; | + | GE := [x + y - 1]; |

Bounds:=[[0,6], [1/3,4]]; | Bounds:=[[0,6], [1/3,4]]; | ||

IntNum:=[x,y]; | IntNum:=[x,y]; | ||

− | Then we compute the solution with | + | -- Then we compute the solution with |

− | + | GLPK.MIPSolve(OF, [], LE, GE, Bounds, IntNum, [], "Max"); | |

− | And we achieve: | + | -- And we achieve: |

Solution Status: INTEGER OPTIMAL | Solution Status: INTEGER OPTIMAL | ||

Value of objective function: 5 | Value of objective function: 5 | ||

− | [x | + | [x - 2, y - 4] |

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

</example> | </example> | ||

</description> | </description> | ||

<types> | <types> | ||

− | <type> | + | <type>apcocoaserver</type> |

+ | <type>linear_programs</type> | ||

</types> | </types> | ||

− | <key> | + | <key>mipsolve</key> |

<key>solve linear programm</key> | <key>solve linear programm</key> | ||

<key>solve lp</key> | <key>solve lp</key> | ||

− | <key> | + | <key>GLPK.MIPSolve</key> |

− | + | <wiki-category>ApCoCoA-1:Package_glpk</wiki-category> | |

− | <wiki-category> | ||

</command> | </command> |

## Latest revision as of 13:32, 29 October 2020

This article is about a function from ApCoCoA-1. |

## GLPK.MIPSolve

Solving linear programmes.

### Syntax

GLPK.MIPSolve(Objective_f:POLY, EQ_Poly:LIST, LE_Poly:LIST, GE_Poly:LIST, Bounds:LIST, IntNum:LIST, Binaries:LIST, MinMax:STRING)

### Description

*Please note:* The function(s) explained on this page is/are using the *ApCoCoAServer*. You will have to start the ApCoCoAServer in order to use it/them.

@param

*Objective_f*: A linear polynomial which is equivalent to the linear objective function.@param

*EQ_Poly*: List of linear polynomials, which are equivalent to the equality-part in the list of conditions.@param

*LE_Poly*: List of linear polynomials, which are equivalent to the lower or equal-part in the list of conditions.@param

*GE_Poly*: List of linear polynomials, which are equivalent to the greater or equal-part in the list of conditions.@param

*Bounds*: List of lists with two elements. Each List contains the lower and upper bounds for each variable. You can choose between INT or RAT for the type of each bound, if you type in a (empty) string, then it means minus infinity (first place) or plus infinity (second place).@param

*IntNum*: List of variables, which should be integer.*Note*: For each variable in this list, the borders get rounded (lower bound: up and upper bound: down). In the case that the lower rounded bound becomes greater then the upper rounded bound, glpk returns: Solution Status: INTEGER UNDEFINED - Value of objective function: 0.@param

*Binaries*: List of variables, which should be binaries (0 or 1).@param

*MinMax*: Minimization ("Min") or maximization ("Max"), that's the question.@return List of linear polynomials, the zeros of the polynomials are the points where the optimal value of the objective function is achieved

#### Example

-- We want to maximize the Function y = - 1/2x, -- with the two conditions y ≤ 6 - 3/4x and y ≥ 1 - x and the bounds 0 ≤ x ≤ 6 and 1/3 ≤ y ≤ 4. -- We prename the input of GLPK.MIPSolve-function. Use S::=QQ[x,y]; OF := 1/2x + y; LE := [3/4x + y - 6]; GE := [x + y - 1]; Bounds:=[[0,6], [1/3,4]]; IntNum:=[x,y]; -- Then we compute the solution with GLPK.MIPSolve(OF, [], LE, GE, Bounds, IntNum, [], "Max"); -- And we achieve: Solution Status: INTEGER OPTIMAL Value of objective function: 5 [x - 2, y - 4]