None Notebook

This notebook contains material from ND-Pyomo-Cookbook; content is available on Github. The text is released under the CC-BY-NC-ND-4.0 license, and code is released under the MIT license.

# 4.1 Introduction to Disjunctive Programming¶

## 4.1.2 Problem statement¶

### 4.1.2.2 Product Composition Requirements¶

Find the lowest cost blend

• Vit A: less than 0.4
• Vit B: greater than 0.2

Your code should be able to accept alternative specification for data and product requirements.

### 4.1.2.3 Component Compatibility¶

For this application, we consider an additional type of constraint specifying the incompatability of certain blends of components. For example, suppose we have a constraint:

• A and B cannot be mixed together in the final product

The constraint is specified by creating a list of incompatabile pairs.

## 4.1.4 Version 1: Including compatibility requirements with Big-M¶

The challenge of this problem are the disjunctive constraints associated with the component incompatability data. Here we associated a boolean variable for each pair, then use the boolean variable to determine which member of the pair to keep in the blend.

## 4.1.6 Analysis¶

\begin{align*} x_A + x_B + x_C & = 1 \\ 0.5 x_A + 0.4 x_B + 0.3 x_C & \leq 0.4 \\ 0.2 x_A + 0.1 x_B + 0.3 x_C & \geq 0.2 \\ \end{align*}

Solving for x_C

\begin{align*} x_C & = 1 - x_A - x_B \end{align*}

Substitution

\begin{align*} 0.2 x_A + 0.1 x_B & \leq 0.1 \\ -0.1 x_A - 0.2 x_B & \geq -0.1 \\ \end{align*}