## Slack Variable Tutorial

## Main.SlackVariables History

Hide minor edits - Show changes to output

Deleted lines 4-5:

Changed lines 29-30 from:

to:

{$\begin{align}\min \quad & cost_{total}\\\mathrm{subject\;to} \quad & supply<b\\& cost_{total}=(supply-2)^2\end{align}$}

'''Gekko (Python) Solution'''

(: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:)

'''APMonitor Solution'''

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

'''Gekko (Python) Solution'''

(: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:)

'''APMonitor Solution'''

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

Changed lines 62-72 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.

!!! Logical Conditions in Optimization

Slack variables are also useful for optimization problems with non-smooth or discontinuous functions. The following tutorial demonstrates the use of slack variables in reformulating the ABS() function, IF statements, and others.

(:html:)

<iframe width="560" height="315" src="https://www.youtube.com/embed/NPUNixLGlh0" frameborder="0" allowfullscreen></iframe>

(:htmlend:)

In APMonitor Modeling Language, inequality constraints are automatically translated into equality constraints with slack variables. Slack

!!! Logical Conditions in Optimization

Slack variables are also useful for optimization problems with non-smooth or discontinuous functions. The following tutorial demonstrates the use of slack variables in reformulating the ABS() function, IF statements, and others.

(:html:)

<iframe width="560" height="315" src="https://www.youtube.com/embed/NPUNixLGlh0" frameborder="0" allowfullscreen></iframe>

(:htmlend:)

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. 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.

!!! 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. 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.

Deleted lines 36-37:

Changed lines 39-47 from:

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:

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.

!!! Logical Conditions in Optimization

Slack variables are also useful for optimization problems with non-smooth or discontinuous functions. The following tutorial demonstrates the use of slack variables in reformulating the ABS() function, IF statements, and others.

(:html:)

<iframe width="560" height="315" src="https://www.youtube.com/embed/NPUNixLGlh0" frameborder="0" allowfullscreen></iframe>

(:htmlend:)

!!! Logical Conditions in Optimization

Slack variables are also useful for optimization problems with non-smooth or discontinuous functions. The following tutorial demonstrates the use of slack variables in reformulating the ABS() function, IF statements, and others.

(:html:)

<iframe width="560" height="315" src="https://www.youtube.com/embed/NPUNixLGlh0" frameborder="0" allowfullscreen></iframe>

(:htmlend:)

Added lines 21-22:

(:html:)<br><br><br>(:htmlend:)

Deleted line 23:

Changed line 9 from:

(:table border=1 width=~~80~~% align=left bgcolor=#FFFFFF cellspacing=0:)

to:

(:table border=1 width=100% align=left bgcolor=#FFFFFF cellspacing=0:)

Deleted lines 20-21:

Changed lines 31-55 from:

(:cellnr:)

! Example model with slack variable

! Solve slack variable problem

! Minimize total_cost

! Subject to supply < b

Model

Parameters

b = 5

End Parameters

Variables

supply

total_cost

End Variables

Equations

supply < b

total_cost = (supply-2)^2

Minimize total_cost

End Equations

End Model

(:cellnr:)

to:

Attach:slack_problem.png

Deleted line 33:

Changed lines 27-28 from:

!! Example Problem

to:

----

!!! Example Problem

!!! Example Problem

Changed lines 61-63 from:

!! Inequality Constraints in APM

to:

----

!!! Inequality Constraints in APM

!!! Inequality Constraints in APM

Changed line 31 from:

(:table border=1 width=~~50~~% align=left bgcolor=#EEEEEE cellspacing=0:)

to:

(:table border=1 width=100% align=left bgcolor=#EEEEEE cellspacing=0:)

Deleted lines 57-58:

(:html:)<br>(:htmlend:)

Changed lines 27-28 from:

to:

!! Example Problem

Changed line 59 from:

to:

!! Inequality Constraints in APM

Deleted lines 22-23:

Deleted lines 26-27:

Added lines 29-30:

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

Changed lines 57-59 from:

(:tableend:)

to:

(:tableend:)

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.

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.

Changed lines 7-8 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 18 from:

slack >~~=~~ 0

to:

slack > 0

Changed lines 25-26 from:

to:

(:html:)

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

(:htmlend:)

In APMonitor, 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.

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

(:htmlend:)

In APMonitor, 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 59 from:

(:tableend:)

to:

(:tableend:)

Changed line 23 from:

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

to:

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

Added lines 1-4:

(: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:)

(:keywords slack variables, inequality, slacks, lower bound, transform:)

(:description Slack variables are used to transform an inequality expression into an equality expression:)

Deleted line 55:

Changed lines 19-20 from:

to:

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

Deleted lines 21-26:

!!! Solve Slack Variable Problems Online

%blue%A%red%P%black%Monitor has an online interface for solving optimization problems. The optimization problem shown below as '''Example Problem''' can be solved through the web-interface at the following link:

Attach:table50.jpg [[https://apmonitor.com/online/view_pass.php?f=slack.apm | Slack Variable Solution Online]]

Changed line 13 from:

x = b + slack ~~ ~~

to:

x = b + slack (:html:)<br>(:htmlend:)

Changed line 5 from:

(:table border=~~2~~ width=~~50~~% align=left bgcolor=#FFFFFF cellspacing=0:)

to:

(:table border=1 width=80% align=left bgcolor=#FFFFFF cellspacing=0:)

Changed line 20 from:

In APMonitor, slack variables can 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 APMonitor, slack variables can 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 20 from:

In APMonitor, slack variables can 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 APMonitor, slack variables can 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 17 from:

(:html:)~~<br>~~<br><br><br><br><br>(:htmlend:)

to:

(:html:)<br><br><br><br><br>(:htmlend:)

Changed line 17 from:

(:html:)<br><br><br><br>(:htmlend:)

to:

(:html:)<br><br><br><br><br><br>(:htmlend:)

Changed line 17 from:

(:html:)<br>(:htmlend:)

to:

(:html:)<br><br><br><br>(:htmlend:)

Changed line 5 from:

(:table border=~~1~~ width=50% align=left bgcolor=#FFFFFF cellspacing=0:)

to:

(:table border=2 width=50% align=left bgcolor=#FFFFFF cellspacing=0:)

Changed line 5 from:

(:table border=1 width=50% align=left bgcolor=#~~EEEEEE~~ cellspacing=0:)

to:

(:table border=1 width=50% align=left bgcolor=#FFFFFF cellspacing=0:)

Added lines 16-18:

(:html:)<br>(:htmlend:)

Changed lines 5-7 from:

Equation inequalities are automatically tranformed to equality expressions for solvers that do not support them

to:

(:table border=1 width=50% align=left bgcolor=#EEEEEE cellspacing=0:)

(:cellnr:)

Inequality Constraint Form

(:cell:)

x > b

(:cellnr:)

Equality Constraint Form with Slack Variable

(:cell:)

x = b + slack

slack >= 0

(:tableend:)

In APMonitor, slack variables can 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.

(:cellnr:)

Inequality Constraint Form

(:cell:)

x > b

(:cellnr:)

Equality Constraint Form with Slack Variable

(:cell:)

x = b + slack

slack >= 0

(:tableend:)

In APMonitor, slack variables can 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.