Slack Variable Tutorial

Main.SlackVariables History

Show minor edits - Show changes to markup

Deleted lines 4-5:

Slack Variables

Changed lines 29-30 from:
Click to Solve a Slack Variable Optimization Problem
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:)

  1. Solve slack variable problem
  2. Minimize total_cost
  3. 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

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

to:

Inequality Constraints

In Gekko Optimization Suite and the 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.

April 14, 2017, at 08:26 PM by 10.5.113.121 -
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:)

June 18, 2013, at 06:04 AM by 69.169.131.173 -
Changed line 21 from:

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

to:

June 18, 2013, at 06:04 AM by 69.169.131.173 -
Added lines 21-22:

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

Deleted line 23:

<br><br>

June 18, 2013, at 06:03 AM by 69.169.131.173 -
Changed line 22 from:

<br>

to:

<br><br>

June 18, 2013, at 06:03 AM by 69.169.131.173 -
Added line 22:

<br>

June 18, 2013, at 06:02 AM by 69.169.131.173 -
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:

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

Changed lines 31-55 from:

(:table border=1 width=100% align=left bgcolor=#EEEEEE cellspacing=0:) (: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:
Deleted line 33:

(:tableend:)

June 18, 2013, at 05:58 AM by 69.169.131.173 -
Changed lines 27-28 from:

Example Problem

to:

Example Problem

Changed lines 61-63 from:

Inequality Constraints in APM

to:

Inequality Constraints in APM

June 18, 2013, at 05:58 AM by 69.169.131.173 -
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:)

June 18, 2013, at 05:57 AM by 69.169.131.173 -
Added lines 58-59:

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

June 18, 2013, at 05:56 AM by 69.169.131.173 -
Changed lines 27-28 from:

Example Problem

to:

Example Problem

Changed line 59 from:

to:

Inequality Constraints in APM

June 18, 2013, at 05:55 AM by 69.169.131.173 -
Added lines 58-59:

June 18, 2013, at 05:54 AM by 69.169.131.173 -
Deleted lines 22-23:
Click to Solve a Slack Variable Optimization Problem
Deleted lines 26-27:

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.

Added lines 29-30:
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.

June 18, 2013, at 05:52 AM by 69.169.131.173 -
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

June 16, 2013, at 11:34 PM by 69.169.188.188 -
Changed lines 25-26 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:

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

Changed line 59 from:

(:tableend:)

to:

(:tableend:)

March 16, 2012, at 09:27 PM by 69.169.136.170 -
Changed line 23 from:
Solve Slack Variable Optimization Problems
to:
Click to Solve a Slack Variable Optimization Problem
March 16, 2012, at 09:26 PM by 69.169.136.170 -
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:)

Deleted line 55:
January 14, 2012, at 11:30 PM by 69.169.188.228 -
Changed lines 19-20 from:
to:
Solve Slack Variable Optimization Problems
Deleted lines 21-26:

Solve Slack Variable Problems Online

APMonitor 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:

Slack Variable Solution Online
January 14, 2012, at 11:26 PM by 69.169.188.228 -
Changed line 13 from:

x = b + slack

to:

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

January 14, 2012, at 11:24 PM by 69.169.188.228 -
Changed line 13 from:

x = b + slack,

to:

x = b + slack

January 14, 2012, at 11:23 PM by 69.169.188.228 -
Changed line 13 from:

x = b + slack

to:

x = b + slack,

January 14, 2012, at 11:23 PM by 69.169.188.228 -
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:)

January 14, 2012, at 11:20 PM by 69.169.188.228 -
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.

January 14, 2012, at 11:20 PM by 69.169.188.228 -
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.

January 14, 2012, at 11:19 PM by 69.169.188.228 -
Changed line 17 from:

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

to:

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

January 14, 2012, at 11:19 PM by 69.169.188.228 -
Changed line 17 from:

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

to:

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

January 14, 2012, at 11:18 PM by 69.169.188.228 -
Changed line 17 from:

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

to:

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

January 14, 2012, at 11:18 PM by 69.169.188.228 -
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:)

January 14, 2012, at 11:18 PM by 69.169.188.228 -
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:)

January 14, 2012, at 11:16 PM by 69.169.188.228 -
Changed lines 5-7 from:

Slack variables are defined by starting a variable name with 'slk'. Thus, valid slack variable names would include names such as slk_1, slkr, slkvar[1]. When the model is parsed at run-time, any variable beginning with slk is automatically assigned a lower value of zero.

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.