Slack Variable Tutorial

Main.SlackVariables History

Hide minor edits - Show changes to output

Changed lines 13-14 from:
or with the slack variable
to:
or with the slack variable (''s'')
Changed lines 19-21 from:
where ''s'' is the slack variable.

Slack variables are defined to transform
an inequality expression into an equality expression with an added slack variable.  The slack variable is defined by setting a lower bound of zero (''≥0'').
to:
Slack variables are defined to transform an inequality expression into an equality expression with the added slack variable.  The slack variable is defined by setting a lower bound of zero (''≥0'').
Changed lines 11-12 from:
{$2x + y + s = 4$}
to:
{$2x + y - 4 \ge 0$}

or with the slack variable

{$s = 2x + y -
4$}
Changed lines 21-22 from:
Slack variables are defined to transform an inequality expression into an equality expression with an added slack variable.  The slack variable is defined by setting a lower bound of zero (≥0).
to:
Slack variables are defined to transform an inequality expression into an equality expression with an added slack variable.  The slack variable is defined by setting a lower bound of zero (''≥0'').
Changed line 32 from:
slack > 0
to:
slack 0
Changed line 17 from:
Slack variables are defined to transform an inequality expression into an equality expression with an added slack variable.  The slack variable is defined by setting a lower bound of zero (>0).
to:
Slack variables are defined to transform an inequality expression into an equality expression with an added slack variable.  The slack variable is defined by setting a lower bound of zero (≥0).
Added lines 12-13:

{$s\ge0$}
Changed lines 5-13 from:
Slack variables are additional variables used in optimization that convert an inequality constraint into an equality constraint, allowing the problem to be solved with standard methods, such as [[Main/InteriorPointMethod|Interior Point Methods]]. Slack variables are typically denoted by the letter ''s'' and the value is always positive. Slack variables convert a constraint of the form "greater than or equal to" into an equation. For example, if the constraint is ''2x + y 4'', then the constraint can be rewritten as ''2x + y + s = 4'', where ''s'' is the slack variable.
to:
Slack variables are additional variables used in optimization that convert an inequality constraint into an equality constraint, allowing the problem to be solved with standard methods, such as [[Main/InteriorPointMethod|Interior Point Methods]]. Slack variables are typically denoted by the letter ''s'' and the value is always positive. Slack variables convert a constraint of the form "greater than or equal to" into an equation. For example, if the constraint is

{$2x
+ y \ge 4$}

then the constraint can be rewritten as

{$2x
+ y + s = 4$}

where ''s'' is the slack variable.
Added lines 4-5:

Slack variables are additional variables used in optimization that convert an inequality constraint into an equality constraint, allowing the problem to be solved with standard methods, such as [[Main/InteriorPointMethod|Interior Point Methods]]. Slack variables are typically denoted by the letter ''s'' and the value is always positive. Slack variables convert a constraint of the form "greater than or equal to" into an equation. For example, if the constraint is ''2x + y ≥ 4'', then the constraint can be rewritten as ''2x + y + s = 4'', where ''s'' is the slack variable.
Changed line 31 from:
'''Gekko Solution'''
to:
'''Gekko (Python) Solution'''
Changed line 66 from:
In [[https://gekko.readthedocs.io/en/latest/|Gekko Optimization Suite]] and the [[https://apmonitor.com/wiki/|APMonitor Modeling Language]], inequality constraints are automatically translated into equality constraints with slack variables. Slack variables can also be defined by starting a variable name with ''slk''.  When the model is parsed at run-time, any variable beginning with ''slk'' is automatically assigned a lower value of zero.  Alternatively, inequality constraints will be automatically converted to equality constraints with a slack variable.
to:
In [[https://gekko.readthedocs.io/en/latest/|Gekko Optimization Suite]] and the [[https://apmonitor.com/wiki/|APMonitor Modeling Language]], inequality constraints are automatically translated into equality constraints with slack variables. In APMonitor, slack variables can also be defined by starting a variable name with ''slk''.  When the model is parsed at run-time, any variable beginning with ''slk'' is automatically assigned a lower value of zero.  Alternatively, inequality constraints are automatically converted to equality constraints with a slack variable.
Changed lines 64-66 from:
!!! Inequality Constraints in APM

In APMonitor Modeling
Language, inequality constraints are automatically translated into equality constraints with slack variables. Slack variables can also be defined by starting a variable name with ''slk''.  When the model is parsed at run-time, any variable beginning with ''slk'' is automatically assigned a lower value of zero.  Alternatively, inequality constraints will be automatically converted to equality constraints with a slack variable.
to:
!!! Inequality Constraints

In [[https://gekko.readthedocs.io/en/latest/|Gekko Optimization Suite]] and the [[https://apmonitor.com/wiki/|APMonitor Modeling
Language]], inequality constraints are automatically translated into equality constraints with slack variables. Slack variables can also be defined by starting a variable name with ''slk''.  When the model is parsed at run-time, any variable beginning with ''slk'' is automatically assigned a lower value of zero.  Alternatively, inequality constraints will be automatically converted to equality constraints with a slack variable.
Changed line 29 from:
{$\begin{align}\min \quad & cost_{total}\\\mathrm{subject to} \quad & supply<b\\& cost_{total}=(supply-2)^2\end{align}$}
to:
{$\begin{align}\min \quad & cost_{total}\\\mathrm{subject\;to} \quad & supply<b\\& cost_{total}=(supply-2)^2\end{align}$}
Changed line 29 from:
{$\begin{align}\min & cost_{total}\\subject to & supply<b\\& cost_{total}=(supply-2)^2\end{align}$}
to:
{$\begin{align}\min \quad & cost_{total}\\\mathrm{subject to} \quad & supply<b\\& cost_{total}=(supply-2)^2\end{align}$}
Changed lines 29-30 from:
Attach:table50.jpg [[https://apmonitor.com/online/view_pass.php?f=slack.apm | Click to Solve a Slack Variable Optimization Problem]]
to:
{$\begin{align}\min & cost_{total}\\subject to & supply<b\\& cost_{total}=(supply-2)^2\end{align}$}
Added lines 33-53:
(:source lang=python:)
# Solve slack variable problem
#  Minimize  total_cost
#  Subject to supply < b
from gekko import GEKKO

b = 5
m = GEKKO(remote=False)
supply = m.Var()
total_cost = m.Var()

m.Equation(supply<b)
m.Equation(total_cost==(supply-2)**2)
m.Minimize(total_cost)

m.solve()

print(supply.value[0])
print(total_cost.value[0])
(:sourceend:)

Added lines 55-56:

Attach:table50.jpg [[https://apmonitor.com/online/view_pass.php?f=slack.apm | Click to Solve Slack Variable Optimization Problem Online]]
Added lines 30-33:

'''Gekko Solution'''

'''APMonitor Solution'''
March 31, 2014, at 03:13 PM by 23.255.228.67 -
Deleted lines 3-4:

!! Slack Variables
March 31, 2014, at 03:10 PM by 23.255.228.67 -
Added lines 1-41:
(:title Slack Variable Tutorial:)
(:keywords slack variables, inequality, slacks, lower bound, transform:)
(:description Slack variables are used to transform an inequality expression into an equality expression:)

!! Slack Variables

Slack variables are defined to transform an inequality expression into an equality expression with an added slack variable.  The slack variable is defined by setting a lower bound of zero (>0).

(:table border=1 width=100% align=left bgcolor=#FFFFFF cellspacing=0:)
(:cellnr:)
Inequality Constraint Form
(:cell:)
x > b
(:cellnr:)
Equality Constraint Form with Slack Variable
(:cell:)
x = b + slack (:html:)<br>(:htmlend:)
slack > 0
(:tableend:)

----

(:html:)
<iframe width="560" height="315" src="https://www.youtube.com/embed/jh6BK0BqqIs?rel=0" frameborder="0" allowfullscreen></iframe>
(:htmlend:)

----

!!! Example Problem

Attach:table50.jpg [[https://apmonitor.com/online/view_pass.php?f=slack.apm | Click to Solve a Slack Variable Optimization Problem]]

Attach:slack_problem.png

Attach:slack_results.png

----

!!! Inequality Constraints in APM

In APMonitor Modeling Language, inequality constraints are automatically translated into equality constraints with slack variables. Slack variables can also be defined by starting a variable name with ''slk''.  When the model is parsed at run-time, any variable beginning with ''slk'' is automatically assigned a lower value of zero.  Alternatively, inequality constraints will be automatically converted to equality constraints with a slack variable.