## Discrete Optimization in Engineering Design

## Main.DiscreteOptimization History

Show minor edits - Show changes to output

Changed line 40 from:

m.~~Obj~~(4*x1**2-4*x2*x1**2+x2**2+x1**2-x1+1)

to:

m.Minimize(4*x1**2-4*x2*x1**2+x2**2+x1**2-x1+1)

Deleted lines 45-63:

----

(:html:)

<div id="disqus_thread"></div>

<script type="text/javascript">

/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */

var disqus_shortname = 'apmonitor'; // required: replace example with your forum shortname

/* * * DON'T EDIT BELOW THIS LINE * * */

(function() {

var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;

dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';

(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);

})();

</script>

<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>

(:htmlend:)

Added lines 31-45:

The integer problem can be solved with [[https://gekko.readthedocs.io/en/latest/|Python GEKKO]]. The option '''integer'''=True is used to switch the variable from continuous to integer form. The APOPT solver is required to solve problem with integer variables but other solvers such as IPOPT can provide a relaxed solution where the integer conditions are not enforced.

(:source lang=python:)

from gekko import GEKKO

m = GEKKO() # create GEKKO model

# create integer variables

x1 = m.Var(integer=True,lb=-1,ub=1)

x2 = m.Var(integer=True,lb=-1,ub=2)

m.Obj(4*x1**2-4*x2*x1**2+x2**2+x1**2-x1+1)

m.options.SOLVER = 1 # APOPT solver

m.solve()

print('x1: ' + str(x1.value[0]))

print('x2: ' + str(x2.value[0]))

(:sourceend:)

Deleted lines 3-6:

At first glance it might seem solving a discrete variable problem would be easier than a continuous problem. After all, for a variable within a given range, a set of discrete values within the range is finite whereas the number of continuous values is infinite. When searching for an optimum, it seems it would be easier to search from a finite set rather than from an infinite set.

This is not the case, however. Solving discrete problems is harder than continuous problems. This is because of the combinatorial explosion that occurs in all but the smallest problems. For example if we have two variables which can each take 10 values, we have 10*10 = 100 possibilities. If we have 10 variables that can each take 10 values, we have 10^10 possibilities. Even with the fastest computer, it would take a long time to evaluate all of these.

Changed lines 5-8 from:

to:

At first glance it might seem solving a discrete variable problem would be easier than a continuous problem. After all, for a variable within a given range, a set of discrete values within the range is finite whereas the number of continuous values is infinite. When searching for an optimum, it seems it would be easier to search from a finite set rather than from an infinite set.

This is not the case, however. Solving discrete problems is harder than continuous problems. This is because of the combinatorial explosion that occurs in all but the smallest problems. For example if we have two variables which can each take 10 values, we have 10*10 = 100 possibilities. If we have 10 variables that can each take 10 values, we have 10^10 possibilities. Even with the fastest computer, it would take a long time to evaluate all of these.

This is not the case, however. Solving discrete problems is harder than continuous problems. This is because of the combinatorial explosion that occurs in all but the smallest problems. For example if we have two variables which can each take 10 values, we have 10*10 = 100 possibilities. If we have 10 variables that can each take 10 values, we have 10^10 possibilities. Even with the fastest computer, it would take a long time to evaluate all of these.

Added lines 10-11:

Discrete decision variables are those that have only certain levels or quantities that are acceptable at an optimal solution. Examples of discrete variables are binary (e.g. off/on or 0/1), integer (e.g. 4,5,6,7), or general discrete values that are not integer (e.g. 1/4 cm, 1/2 cm, 1 cm).

Added line 5:

Added lines 7-11:

(:html:)

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

(:htmlend:)

Added line 9:

** [[Attach:apopt_minlp.zip | Branch and Bound with APOPT solver (MATLAB and Python)]]

Added lines 12-17:

(:html:)

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

(:htmlend:)

One often encounters problems in which design variables must be selected from among a set of discrete values. Examples of discrete variables include catalog or standard sizes (I beams, motors, springs, fasteners, pipes, etc.), materials, and variables which are naturally integers such as people, gear teeth, number of shells in a heat exchanger and number of distillation trays in a distillation column. Many engineering problems are discrete in nature.

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

(:htmlend:)

One often encounters problems in which design variables must be selected from among a set of discrete values. Examples of discrete variables include catalog or standard sizes (I beams, motors, springs, fasteners, pipes, etc.), materials, and variables which are naturally integers such as people, gear teeth, number of shells in a heat exchanger and number of distillation trays in a distillation column. Many engineering problems are discrete in nature.

Deleted lines 18-19:

One often encounters problems in which design variables must be selected from among a set of discrete values. Examples of discrete variables include catalog or standard sizes (I beams, motors, springs, fasteners, pipes, etc.), materials, and variables which are naturally integers such as people, gear teeth, number of shells in a heat exchanger and number of distillation trays in a distillation column. Many engineering problems are discrete in nature.

Changed lines 11-12 from:

[[Attach:chap4_worksheet1.pdf | Attach:bnb_contour.png]]

to:

->[[Attach:chap4_worksheet1.pdf | Attach:bnb_contour.png]]

Changed lines 9-11 from:

* [[Attach:chap4_worksheet1.pdf | Lecture 4.2: Branch and Bound ~~Exercize~~]]

to:

* [[Attach:chap4_worksheet1.pdf | Lecture 4.2: Branch and Bound Exercise]]

[[Attach:chap4_worksheet1.pdf | Attach:bnb_contour.png]]

Added line 9:

* [[Attach:chap4_worksheet1.pdf | Lecture 4.2: Branch and Bound Exercize]]

Changed line 8 from:

** [[https://apmonitor.com/online/view_pass.php?f=minlp_apopt.apm | Branch and Bound]] (Select APOPT solver)

to:

** [[https://apmonitor.com/online/view_pass.php?f=minlp_apopt.apm | Branch and Bound with APMonitor]] (Select APOPT solver)

Changed line 8 from:

** [[https://apmonitor.com/online/view_pass.php?f=minlp_apopt.apm | Branch and Bound~~ with APMonitor~~]]

to:

** [[https://apmonitor.com/online/view_pass.php?f=minlp_apopt.apm | Branch and Bound]] (Select APOPT solver)

Changed lines 5-6 from:

* [[Attach:chap4_~~lecture~~_~~1~~.pdf | Chapter 4: ~~Introduction Lecture~~]]

* [[Attach:chap4_~~discrete~~_~~opt~~.pdf | ~~Chapter~~ 4: ~~Discrete Optimization Chapter~~]]

* [[Attach:chap4_

to:

* [[Attach:chap4_discrete_opt.pdf | Chapter 4: Discrete Optimization]]

* [[Attach:chap4_lecture_1.pdf | Lecture 4.1: Introduction to Discrete Optimization]]

** [[Attach:matlab_minlp.zip | Branch and Bound with MATLAB]]

** [[https://apmonitor.com/online/view_pass.php?f=minlp_apopt.apm | Branch and Bound with APMonitor]]

* [[Attach:chap4_lecture_1.pdf | Lecture 4.1: Introduction to Discrete Optimization]]

** [[Attach:matlab_minlp.zip | Branch and Bound with MATLAB]]

** [[https://apmonitor.com/online/view_pass.php?f=minlp_apopt.apm | Branch and Bound with APMonitor]]

Changed lines 5-7 from:

[[Attach:chap4_~~discrete~~_~~opt~~.pdf | Chapter 4: ~~Discrete Optimization~~]]

[[Attach:chap4_~~lecture~~_~~1~~.pdf | Chapter 4: ~~Lecture Notes - 1~~]]

to:

* [[Attach:chap4_lecture_1.pdf | Chapter 4: Introduction Lecture]]

* [[Attach:chap4_discrete_opt.pdf | Chapter 4: Discrete Optimization Chapter]]

* [[Attach:chap4_discrete_opt.pdf | Chapter 4: Discrete Optimization Chapter]]

Added lines 6-7:

[[Attach:chap4_lecture_1.pdf | Chapter 4: Lecture Notes - 1]]

Added lines 12-30:

----

(:html:)

<div id="disqus_thread"></div>

<script type="text/javascript">

/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */

var disqus_shortname = 'apmonitor'; // required: replace example with your forum shortname

/* * * DON'T EDIT BELOW THIS LINE * * */

(function() {

var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;

dsq.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';

(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);

})();

</script>

<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>

(:htmlend:)

Added lines 1-11:

(:title Discrete Optimization in Engineering Design:)

(:keywords discrete optimization, nonlinear, optimization, engineering optimization, interior point, active set, differential, algebraic, modeling language, university course:)

(:description One often encounters problems in which design variables must be selected from among a set of discrete values:)

[[Attach:chap4_discrete_opt.pdf | Chapter 4: Discrete Optimization]]

One often encounters problems in which design variables must be selected from among a set of discrete values. Examples of discrete variables include catalog or standard sizes (I beams, motors, springs, fasteners, pipes, etc.), materials, and variables which are naturally integers such as people, gear teeth, number of shells in a heat exchanger and number of distillation trays in a distillation column. Many engineering problems are discrete in nature.

At first glance it might seem solving a discrete variable problem would be easier than a continuous problem. After all, for a variable within a given range, a set of discrete values within the range is finite whereas the number of continuous values is infinite. When searching for an optimum, it seems it would be easier to search from a finite set rather than from an infinite set.

This is not the case, however. Solving discrete problems is harder than continuous problems. This is because of the combinatorial explosion that occurs in all but the smallest problems. For example if we have two variables which can each take 10 values, we have 10*10 = 100 possibilities. If we have 10 variables that can each take 10 values, we have 10^10 possibilities. Even with the fastest computer, it would take a long time to evaluate all of these.

(:keywords discrete optimization, nonlinear, optimization, engineering optimization, interior point, active set, differential, algebraic, modeling language, university course:)

(:description One often encounters problems in which design variables must be selected from among a set of discrete values:)

[[Attach:chap4_discrete_opt.pdf | Chapter 4: Discrete Optimization]]

One often encounters problems in which design variables must be selected from among a set of discrete values. Examples of discrete variables include catalog or standard sizes (I beams, motors, springs, fasteners, pipes, etc.), materials, and variables which are naturally integers such as people, gear teeth, number of shells in a heat exchanger and number of distillation trays in a distillation column. Many engineering problems are discrete in nature.

At first glance it might seem solving a discrete variable problem would be easier than a continuous problem. After all, for a variable within a given range, a set of discrete values within the range is finite whereas the number of continuous values is infinite. When searching for an optimum, it seems it would be easier to search from a finite set rather than from an infinite set.

This is not the case, however. Solving discrete problems is harder than continuous problems. This is because of the combinatorial explosion that occurs in all but the smallest problems. For example if we have two variables which can each take 10 values, we have 10*10 = 100 possibilities. If we have 10 variables that can each take 10 values, we have 10^10 possibilities. Even with the fastest computer, it would take a long time to evaluate all of these.