ISYE 671Linear Optimization & Network Flows

← MaterialsDownload: Markdown · PDF

ISYE 671: Linear Optimization and Network Flows — Supplemental Note

Revised Exercise 2.4: Swedish Steel — Standard vs. Premium Product Selection

Instructor: Dr. Ziteng Wang | Date: February 9, 2026


Motivation: Why the Original Exercise Needs Revision

In the Swedish Steel fixed-charge model (Section 2.3 of the lecture notes), the standard product requires nickel content between 30 and 35 kg (3.0%–3.5% of the 1000 kg charge). If we naively add a “premium” option requiring at least 50 kg of nickel (\(\geq\) 5%), we face a contradiction: the standard upper bound (\(N \leq 35\)) and the premium lower bound (\(N \geq 50\)) cannot hold simultaneously. A simple bonus variable cannot resolve this — we need to model a genuine either-or product selection using disjunctive constraints.

This revised exercise illustrates a powerful and broadly applicable IP technique: using Big-M constraints to activate one of several mutually exclusive specification sets.


Revised Problem Statement

Swedish Steel can produce one of two product grades from the same furnace charge:

All other chemical specifications (carbon, chromium, molybdenum) remain identical for both grades. The fixed-charge setup structure for ingredients 1–4 also remains unchanged.

Task: Modify the fixed-charge Swedish Steel model to allow the company to choose which grade to produce, and determine the optimal decision.


Solution

Step 1: Define New Decision Variables

We introduce two new binary variables, consistent with the notation in the Exercise Solutions document:

\[z = \begin{cases} 1 & \text{if the company opts into the premium contract} \\ 0 & \text{otherwise} \end{cases}\]

\[w = \begin{cases} 1 & \text{if the premium nickel specification is active (i.e., premium is both chosen and met)} \\ 0 & \text{otherwise} \end{cases}\]

The variable \(z\) represents the business decision to pursue the premium contract. The variable \(w\) represents the technical outcome that the premium specification is actually enforced. We require \(w \leq z\): the premium specification can only be active if the company has opted in.

Why two variables? The testing fee of 500 kroner is paid whenever the company opts in (\(z = 1\)), regardless of whether the nickel target is achieved. The bonus of 2,000 kroner is earned only when the premium specification is met (\(w = 1\)). Separating the opt-in decision from the specification enforcement allows the objective to capture these distinct cost/benefit components.

Step 2: Replace the Nickel Constraints with Disjunctive Constraints

Let \(N\) denote the nickel content of the charge:

\[N = 0.180x_1 + 0.032x_2 + x_5\]

The original model has two nickel constraints: \(N \geq 30\) and \(N \leq 35\). We must replace these with constraints that enforce either the standard specification \([30, 35]\) (when \(w = 0\)) or the premium specification \(N \geq 50\) with no upper bound (when \(w = 1\)).

Let \(M\) be a sufficiently large constant. Since \(N\) cannot exceed the total charge weight, \(M = 1000\) is valid (though tighter values are preferable in practice — see Discussion Point 1 below).

Standard nickel lower bound (active when \(w = 0\), relaxed when \(w = 1\)):

\[N \geq 30 - Mw\]

Standard nickel upper bound (active when \(w = 0\), relaxed when \(w = 1\)):

\[N \leq 35 + Mw\]

Premium nickel lower bound (active when \(w = 1\), relaxed when \(w = 0\)):

\[N \geq 50 - M(1 - w)\]

Note that the premium grade has no upper bound on nickel content, so there is no fourth constraint. This is an asymmetric disjunction: one side has two bounds, the other has one.

Verification that these work correctly:

\(w\) Std lower Std upper Prem lower
0 (standard) \(N \geq 30\) (binds) \(N \leq 35\) (binds) \(N \geq 50 - M\) (trivial)
1 (premium) \(N \geq 30 - M\) (trivial) \(N \leq 35 + M\) (trivial) \(N \geq 50\) (binds)

These four constraints replace the original two nickel constraints. All other constraints in the model (weight, carbon, chromium, molybdenum, switching, setup) remain unchanged.

The premium specification can only be active if the company has opted in:

\[w \leq z\]

This constraint ensures that if \(z = 0\) (no opt-in), then \(w = 0\) (standard specification is enforced).

Step 4: Modify the Objective Function

The objective captures two separate financial effects:

\[\min \quad \underbrace{16x_1 + 10x_2 + 8x_3 + 9x_4 + 48x_5 + 60x_6 + 53x_7}_{\text{variable ingredient costs}} + \underbrace{350(y_1 + y_2 + y_3 + y_4)}_{\text{setup costs}} + \underbrace{500z}_{\text{testing fee}} - \underbrace{2000w}_{\text{premium bonus}}\]

Key modeling insight: Since we are minimizing and \(w\) carries a negative coefficient (\(-2000\)), the optimizer wants to set \(w = 1\) whenever possible. This means:

Conversely, \(z\) carries a positive coefficient (\(+500\)), so the optimizer prefers \(z = 0\). It will set \(z = 1\) only when the benefit from \(w = 1\) (bonus of 2,000) outweighs the testing fee (500) plus any additional ingredient cost.

Step 5: Complete Revised Model

\[\min \quad \sum_{j=1}^{7} c_j x_j + \sum_{j=1}^{4} 350 y_j + 500z - 2000w\]

subject to:

\[\sum_{j=1}^{7} x_j = 1000 \quad \text{(weight)}\]

\[6.5 \leq 0.0080x_1 + 0.0070x_2 + 0.0085x_3 + 0.0040x_4 \leq 7.5 \quad \text{(carbon, unchanged)}\]

\[N \geq 30 - Mw \quad \text{(standard nickel lower)}\]

\[N \leq 35 + Mw \quad \text{(standard nickel upper)}\]

\[N \geq 50 - M(1 - w) \quad \text{(premium nickel lower)}\]

where \(N = 0.180x_1 + 0.032x_2 + x_5\)

\[10 \leq 0.120x_1 + 0.011x_2 + x_6 \leq 12 \quad \text{(chromium, unchanged)}\]

\[11 \leq 0.001x_2 + x_7 \leq 13 \quad \text{(molybdenum, unchanged)}\]

\[x_j \leq u_j y_j \quad \text{for } j = 1, \ldots, 4 \quad \text{(switching/setup)}\]

\[w \leq z \quad \text{(premium spec requires opt-in)}\]

\[x_j \geq 0, \quad y_j \in \{0,1\} \; (j = 1,\ldots,4), \quad z \in \{0,1\}, \quad w \in \{0,1\}\]


Discussion Points for Class

1. Tightening Big-M Values

The value of \(M\) must be large enough to fully relax the inactive constraints. Here \(M = 1000\) works because the nickel content is bounded by the total charge weight. However:

2. The Relationship between \(z\) and \(w\)

In this model, the optimal solution will always have \(z = w\) (either both 0 or both 1). Why? If \(z = 1\) and \(w = 0\), the company pays the testing fee but earns no bonus and still must meet the standard spec — strictly worse than \(z = 0, w = 0\). The optimizer will never choose this.

So why keep both variables? Because the problem statement distinguishes the business decision (opt-in) from the technical outcome (spec met). In a more complex variant — for example, if the testing fee were paid upfront and the bonus depended on a stochastic yield — \(z\) and \(w\) could take different values. The two-variable formulation is the more general and extensible approach.

3. Generalization: Multiple Product Grades

If the company could choose among \(K\) grades (e.g., standard, premium, ultra-premium), we would introduce \(w_k \in \{0,1\}\) for \(k = 1, \ldots, K\) with:

\[\sum_{k=1}^{K} w_k = 1 \quad \text{(exactly one grade produced)}\]

Each element’s bounds would be controlled by the corresponding \(w_k\) via Big-M. This pattern arises frequently in process engineering and product design optimization.

4. Connection to Other Lecture Topics

This exercise ties together three techniques from the lecture:

Students should recognize that the Big-M disjunction used here for product specifications is structurally identical to the Big-M disjunction used in scheduling for conflict constraints. The underlying principle is the same: use a binary variable and a large constant to activate exactly one of two constraint sets.