Introduction to linear programming using LEGO.

1 The manufacturing problem.

A manufacturer produces two pieces of furniture, tables and chairs. The production of the furniture requires the use of two different pieces of raw-material, one table is assembled by putting together two pieces of of each, while one chair is assembled from one of the larger pieces and two of the smaller pieces. When determining the optimal production plan, the manufacturer must take into account that only 6 large and 8 small pieces are available. One table is sold for 1600:-, while the chair sells for 1000:-. Under the assumption that all items produced can be sold, and that the raw material has already been paid for, determine the optimal production plan.

[figure: Small pieces; Large pieces; Chair, x_{2}; Table, x_{1}]

Objective: Maximize income

Variable definition: x_{1} = number of tables manufactured and sold
x_{2} = number of chairs manufactured and sold
z = total income

Model:  max z = 1600x_{1} + 1000x_{2}
subject to  2x_{1} +  x_{2} ≤ 6  (large pieces)
2x_{1} +  2x_{2} ≤ 8  (small pieces)
x_{1}, x_{2} ≥ 0  (physical restrictions)
x_{1}, x_{2} integers  (ignored here)

2 Solving the model using LEGO.

Starting at no production, x = (0, 0)^{T}, we use the method of best marginal profit to choose the item to produce. Since x_{1} has the highest marginal profit, we produce as many tables as possible. At x = (3, 0)^{T}, there are no more large pieces.

The marginal value of x_{2} is now 200 since taking apart one table (= 1600:-) yields two chairs (= 2000:-). Increase x_{2} maximally. At x = (2, 2)^{T}, there are no more small pieces.

The marginal value of x_{1} is negative (one has to take apart two chairs to build one extra table, loss of 400:-), and so is the marginal value of x_{2} (one table must be taken apart to build one chair, loss of 600:-). Hence x = (2, 2)^{T} is optimal. The maximum profit is 5200:-.

3 Sensitivity analysis using LEGO.

The following three modifications are performed independently, starting from the original model.

• Suppose that an additional large piece was offered to the manufacturer. How much would he/she be willing to pay for such a piece, and how many pieces would be worth this price?

Answer: with an additional large piece, a chair can be turned into a table. The profit from this adjustment is 1600 − 1000 = 600:-. The manufacturer is willing to pay up to 600:- for each large piece, as long as there are chairs left. So, the maximum number of pieces bought is 2.

• Same question for the small pieces.

Answer: with two additional small pieces, a table can be converted into two chairs, to an additional profit of 2 · 1000 − 1600 = 400:-. The value per piece is therefore 200:-, and the manufacturer is willing is willing to pay up to this price for as many as 4 small pieces (no more than 2 tables can be broken down).

• Suppose the price of the tables falls to 750:-. What should be manufactured in order to maximize income?

Answer: The marginal value of x_{2} is changed to 1000 − 750 = 250:- per chair (dismantle a table and build a chair). This value is valid as long as there are tables to dismantle, i.e., increase x_{2} by 2 to x_{2} = 4; which gives x_{1} = 0. The marginal value of x_{1} is now 750 − 1000 = −250:-, that is, it is not profitable to build any more tables. Hence x = (0, 4)^{T} (manufacturing 4 chairs and no tables) is optimal at a total income of 4000 :-.

4 Geometric solution of the model

max z = 1600x_{1} + 1000x_{2}  (0)
subject to  2x_{1} +  x_{2} ≤ 6  (1)
2x_{1} +  2x_{2} ≤ 8  (2)
x_{1}, x_{2} ≥ 0

[figure: x_{2}; x_{1}; z = 0; (0); (1); (2); x^{∗} = (2, 2)]

4.1 Geometric sensitivity analysis

The model may be described as:

[ \begin{matrix}max & z & = & 1600x_{1} + 1000x_{2} \\ subject to & 2x_{1} & + & x_{2} & ≤ & 6 \\ 2x_{1} & + & 2x_{2} & ≤ & 8 \\ x_{1}, x_{2} & ≥ & 0 \end{matrix} ] ⟺ [ \begin{matrix}max & z & = c_{1}x_{1} + c_{2}x_{2} \\ subject to & a_{11}x_{1} & + & a_{12}x_{2} & ≤ & b_{1} \\ a_{21}x_{1} & + & a_{22}x_{2} & ≤ & b_{2} \\ & & x_{1}, x_{2} & ≥ & 0 \end{matrix} ]

Suppose the following changes are made (independent of each other):

• b_{1} = 6 + Δb_{1}, Δb_{1} = 1 ⇒ x^{∗} = (3, 1)^{T} ⇒ z^{∗} = 5800:- Income per additional large piece: 5800 − 5200:- = 600:- Δb_{1} > 2 gives no further income since x_{2} ≥ 0 must apply.

• b_{2} = 8 + Δb_{2}, Δb_{2} = 2 ⇒ x^{∗} = (1, 4)^{T} ⇒ z^{∗} = 5600:- Income per additional large piece: (5600 − 5200)/2:- = 200:- Δb_{2} > 4 gives no further income since x_{1} ≥ 0 must apply.

• c_{1} = 1600 + Δc_{1}, Δc_{1} = −750 ⇒ x^{∗} = (0, 4)^{T} ⇒ z^{∗} = 4000 : −

[figure: x_{2}; x_{1}]

5 A non technical introduction to the Simplex method and sensitivity analysis in LP

5.1 Slack, dependent, independent variables and extreme points

Original problem form:

max z = 1600x_{1} + 1000x_{2}
subject to  2x_{1} +  x_{2} ≤ 6  (1)
2x_{1} +  2x_{2} ≤ 8  (2)
x_{1}, x_{2} ≥ 0

Inequalities cannot be manipulated using row operations. We therefore turn (1) and (2) to equations using slack variables:

max z = 1600x_{1} + 1000x_{2}
subject to  2x_{1} +  x_{2} + s_{1}  = 6  (1)
2x_{1} +  2x_{2}  + s_{2} = 8  (2)
x_{1}, x_{2}, s_{1}, s_{2} ≥ 0

We now have 4 variables and 2 equations. We will eliminate 2 of the 4 variables by the use of the equations, and view the problem in terms of the remaining variables. We refer to the variables used to solve the system of equations as the dependent variables, and the remaining ones the independent variables. We will also define the objective function z in terms of the independent variables. When choosing which variables to be dependent and which to be independent, we must make sure that (1) the dependent variables can be used to solve the linear system; this will require that the corresponding columns of the system matrix are linearly independent; and (2) the solution to the linear system also fulfils the non-negativity requirements. We note the following: each constrained boundary corresponds to a variable with a value zero:

Let X = {x ∈ ℜ^{2} | 2x_{1} + x_{2} ≤ 6, 2x_{1} + 2x_{2} ≤ 8, x_{1} ≥ 0, x_{2} ≥ 0}

[figure: x_{2}; x_{1}; (1); (2); x_{1} = 0; x_{2} = 0; s_{1} = 0; s_{2} = 0; X; Extreme point of X; Non feasible intersection point]

In the figure we see that an extreme point of X is characterized by two variables being zero simultaneously. We also see that there are other points where two variables are zero (that is, two lines intersect), but those are infeasible since either a variable x_{j} or a slack variable s_{i} is negative.

Linear programming problems have the fundamental property that if an optimal solution exists, then there exists an optimal extreme point.

In general, consider

max z = c^{T} x,
subject to  Ax = b,
x ≥ 0,

where x, c ∈ ℜ^{n}, b ∈ ℜ^{m} and A ∈ ℜ^{m×n}. Let X = {x ∈ ℜ^{n} | Ax = b, x ≥ 0}.

For our example this corresponds to m = 2, n = 4, x = (x_{1}, x_{2}, s_{1}, s_{2})^{T}, c =

(1600, 1000, 0, 0)^{T}, A = ( \begin{matrix}2 & 1 & 1 & 0 \\ 2 & 2 & 0 & 1 \end{matrix} ), and b = ( \begin{matrix}6 \\ 8 \end{matrix} ).

An extreme point of X corresponds to a solution x to Ax = b, in which n − m variables (the independent) are zero, and the remaining m variables (the dependent) are non-negative. (This is the fundamental connection between the geometry and algebra of linear programming and the simplex method.)

We draw the interesting conclusion that if there exists an optimal solution to an LP with n variables and m constraints (inequality and/or equality constraints), then there exists an optimal solution where no more than m variables have a positive value. Hence, we know already beforehand how many activities will be active, and it is a relatively small number too (normally, it holds that n ≫ m).

5.2 The simplex method

The simplex method searches the extreme points of X in a clever way, following the edges of X so that the value of z is always improving until the optimal extreme point is found. Moving from one extreme point to the next, the simplex method swaps one independent variable and a dependent variable, and it always maintains a description of the problem in terms of the current independent variables.

In essence, the Simplex method works as follows: among the variables, n − m are chosen as independent variables, by eliminating the remaining m variables from the objective function, using the system Ax = b to describe the m variables in terms of the independent variables.

If the partitioning of the n variables into independent and dependent variables is correct, then setting the independent variables to zero means that x describes an extreme point of X. The objective function is now written in terms of the n − m variables; we determine if the extreme point is optimal by checking the sign of the coefficients of the objective. If one of the coefficients is > 0, then increasing the corresponding variable means a higher profit. We choose the variable with the highest positive coefficient. To increase the value of an independent variable from its value zero at the extreme point means that we leave the boundary of one constraint and move along an edge of X. We move along the edge until we encounter a new constraint, which determines the maximal increase of the independent variable. The constraint encountered corresponds to some dependent variable becoming zero.

Since, in the new point, n − m variables are zero, it is an extreme point. The next step in the Simplex method is to replace the independent variable being increased from zero with the dependent variable which became zero, that is, the two variables swap positions so that the previous dependent variable becomes independent and vice versa. This is done through simple row operations and we repeat the same steps from this new problem description.

We note that the algorithmic process explained below with the help of the simplex tableau is not exactly the one that is implemented in practice, although it does produce the same sequence of improved solutions. The difference between the one given here and the one actually used in practice, known as the revised simplex method, is that the tableau format requires one to perform some calculations that in reality are unnecessary.

5.3 The example problem

We begin by writing the problem in the form

−z + c^{T} x = 0
Ax = b
x ≥ 0

which gives the following system of linear equations (excluding the non-negativity constraints)

\begin{aligned}−z & + & 1600x_{1} & + & 1000x_{2} & & & & & = & 0 \\ & & 2x_{1} & + & x_{2} & + & s_{1} & & & = & 6 \\ & & 2x_{1} & + & 2x_{2} & & & + & s_{2} & = & 8 \end{aligned}

We identify s_{1} and s_{2} as dependent variables and x_{1} and x_{2} as independent variables, since (1) s_{1} and s_{2} are given as functions of x_{1} and x_{2}, and (2) s_{1} and s_{2} are not in the objective function. Setting the independent variables to zero yields x_{1} = x_{2} = 0, that is, the extreme point being the origin point. The coefficients for x_{1} and x_{2} in the objective are 1600 and 1000, so x_{1} is the most profitable. (Needless to say, the origin is not an optimal extreme point since the coefficients are not non-positive.) We consider increasing x_{1} from zero; this means moving along the x_{1}-axis (an edge of X). How far can we move? From the above, we have:

\begin{aligned}s_{1} & = & 6 & − & 2x_{1} & − & x_{2} & = & 6 & − & 2x_{1} \\ s_{2} & = & 8 & − & 2x_{1} & − & 2x_{2} & = & 8 & − & 2x_{1} \end{aligned}

Note that x_{2} stays equal to zero while x_{1} increases. As long as s_{1}, s_{2} ≥ 0, x_{1} may increase. The first variable to reach zero is s_{1} (when x_{1} = 6/2 = 3), and so the maximum value for x_{1} is 3. (That s_{1} = 0 means that we have used up all the large pieces.) We have now found the independent variable (x_{1}) and the dependent variable (s_{1}) that are to change places. In order to express the problem in the new set of independent variables (x_{2},s_{1}), we do as follows:

\begin{aligned}−z & + & 1600 x_{1} & + & 1000 x_{2} & & & & & = & 0 & (0) \\ & & 2 x_{1} & + & x_{2} & + & s_{1} & & & = & 6 & (1) \\ & & 2 x_{1} & + & 2 x_{2} & & & + & s_{2} & = & 8 & (2) \\ −z & & & + & 200 x_{2} & − & 800 s_{1} & & & = & − 4800 & (0)−800·(1) \\ & & x_{1} & + & \frac{1}{2}x_{2} & + & \frac{1}{2}s_{1} & & & = & 3 & \frac{1}{2}·(1) \\ & & & & x_{2} & − & s_{1} & + & s_{2} & = & 2 & (2)−(1) \end{aligned}

We have now eliminated the dependent variables (x_{1},s_{2}) from the objective, and the two dependent variables are written in terms of the independent variables (x_{2},s_{2}). We observe the following: (1) setting x_{2} = s_{1} = 0, we have x = (3, 0)^{T}, that is, an extreme point of X (2) the objective value at this point is 4800 (note the sign!); (3) the marginal profit of x_{2} at this point is 200, as seen in the objective function. So, since at least one coefficient is positive, the current solution is not optimal.

We next choose to increase x_{2} from zero. Since we keep s_{1} = 0 we move along the first constraint. From the above system we then get the following:

\begin{aligned}x_{1} & = & 3 & − & \frac{1}{2}x_{2} \\ s_{2} & = & 2 & − & x_{2} \end{aligned}

First to reach zero is s_{2} (at x_{2} = 2). So, we set x_{2} = 2 and have identified the next pair to be exchanged. The new extreme point clearly is x = (2, 2)^{T}, since the new value of x_{1} = 3 − \frac{1}{2} · 2 = 2, and we express the new extreme point as follows:

\begin{aligned}−z & & + & 200 x_{2} & − & 800 s_{1} & & & = & −4800 & (0) \\ & x_{1} & + & \frac{1}{2}x_{2} & + & \frac{1}{2}s_{1} & & & = & 3 & (1) \\ & & & x_{2} & − & s_{1} & + & s_{2} & = & 2 & (2) \\ −z & & & & − & 600 s_{1} & − & 200 s_{2} & = & −5200 & (0)−200·(2) \\ & x_{1} & & & + & s_{1} & − & \frac{1}{2}s_{2} & = & 2 & (1)−\frac{1}{2}·(2) \\ & & & x_{2} & − & s_{1} & + & s_{2} & = & 2 & (2) \end{aligned}

From this system, we read that x = (2, 2)^{T}, that z = 5200, and that this extreme point is optimal, since no coefficient in the objective function is positive. This completes the application of the simplex method to the problem.

5.4 Sensitivity analysis

We are next interested in determining the value of additional resources from the above system, and also how many such pieces one would be willing to purchase at the given price.

We argue as follows. Consider letting b_{1} := b_{1} + Δb_{1}, where Δb_{1} > 0. Keeping the representation as in the above system, utilizing the new capacity fully by changing x^{∗} = (2, 2)^{T} so that it follows the constraint means that the slack variable, s_{1}, must become negative; if b_{1} := b_{1} + 1, then s_{1} must equal −1. So, if Δb_{1} = 1, then the added profit must be (−600) · (−1) = 600:-. To see what the new optimal solution is, we use the system to see that

x_{1} = 2 − s_{1}
x_{2} = 2 + s_{1}

so with b_{1} := b_{1} + 1 we get s_{1} = −1, that is, x^{∗} = (3, 1)^{T}. It is also clear that the maximal value of Δb_{1} is that for which either x_{1} or x_{2} becomes zero. This happens when s_{1} = −2, that is, for Δb_{1} = 2, in which case x^{∗} = (4, 0)^{T} (only tables are produced). Hence, a maximal of two extra pieces will be bought at a maximal price of 600:- per piece.

For the second piece, the argument is identical. Let b_{2} := b_{2} + Δb_{2}. The effect of an increase in b_{2} is that s_{2} must become negative, and we can read of the profit from an additional small piece as (−200) · (−1) = 200:-. The new solution for any value of Δb_{2} and its maximal value follows from the system as:

x_{1} = 2 + \frac{1}{2}s_{2} = 2 − \frac{1}{2}Δb_{2}
x_{2} = 2 − s_{2} = 2 + Δb_{2}.

So, with Δb_{2} = 2, we get x^{∗} = (1, 4)^{T}, and the maximal value of Δb_{2} is 4 (corresponding to x^{∗} = (0, 6)^{T}). We hence buy at most 4 pieces for the maximum price of 200:- each.

6 A non-technical introduction to duality in linear programming

6.1 A competitor

Suppose that another manufacturer (let us call them Billy) produce book shelves whose raw material is identical to those used for the table and chairs, that is, the small and large pieces. Billy wish to expand their production, and are interested in acquiring the resources that “our” factory sits on. Let us ask ourselves two questions, which (as we shall see) have identical answers: (1) what is the lowest bid (price) for the total capacity at which we are willing to sell?; (2) what is the highest bid (price) that Billy are prepared to offer for the resources? The answer to those two questions is a measure of the wealth of the company in terms of their resources.

6.2 A dual problem

To study the problem, we introduce:

Variable definition: y_{1} = the price (in Skr) which Billy offers for each large piece
y_{2} = the price (in Skr) which Billy offers for each small piece
w = det total bid which Billy offers

In order to accept to sell our resources, it is reasonable to require that the price offered is at least as high as the value that the resource represents in our optimal production plan, as otherwise we would earn more by using the resource ourselves. Consider, for example, the net income on a table sold. It is 1600:-, and for that we use two large and two small pieces. The bid would therefore clearly be too low unless 2y_{1} + 2y_{2} ≥ 1600. The corresponding requirement for the chairs is that y_{1} + 2y_{2} ≥ 1000.

Billy is interested in minimizing the total bid, under the condition that the offer is accepted. Observing that y_{1} and y_{2} are prices and therefore nonnegative, we have the following mathematical model for Billy’s problem:

Model:  min w = 6y_{1} + 8y_{2}
subject to 2y_{1} + 2y_{2} ≥ 1600 (table)
y_{1} + 2y_{2} ≥ 1000  (chair)
y_{1}, y_{2} ≥ 0  (price)

This is usually called the dual problem of our production planning problem (which would then be the primal problem).

The optimal solution to this problem is y^{∗} = (600, 200)^{T}. The total offer is w^{∗} = 5200:-.

6.3 Interpretations of the dual optimal solution

It is evident that the dual optimal solution is identical to the shadow prices for the resource (capacity) constraints. (This is indeed a general conclusion in linear programming.) To motivate that this is reasonable in our setting, we may consider Billy as a fictitious competitor only, which we use together with the dual problem to measure the value of our resources. This (fictitious) measure can be used to create internal prices in a company in order to utilize limited resources as efficiently as possible, especially if the resource is common to several independent sub-units. The price that the dual optimal solution provides will then be a price directive for the sub-units, that will make them utilize the scarce resource in a manner which is optimal for the overall goal.

We note that the optimal value of the production (5200:-) agrees with the total value w^{∗} of the resources in our company. (This is also a general result in linear programming; see Strong duality below.) Billy will of course not pay more than what the resource is worth, but can at the same time not offer less than the profit that our company can make ourselves, since we would then not agree to sell.

It follows immediately that for each feasible production plan x and price y, it holds that z ≤ w, since

z = 1600x_{1} + 1000x_{2} ≤ (2y_{1} + 2y_{2})x_{1} + (y_{1} + 2y_{2})x_{2} = y_{1}(2x_{1} + x_{2}) + y_{2}(2x_{1} + 2x_{2})

≤ 6y_{1} + 8y_{2} = w,

where in the inequalities we utilize all the constraints of the primal and dual problems. (Also this fact is general in linear programming; see Weak duality below.) So, each accepted offer (from our point of view) must necessarily be an upper bound on our own possible profit, and this upper bound is what Billy wish to minimize in the dual problem.

6.4 Dual problems

Exactly the same data is present in both problems. In fact, to each primal problem one can associate a corresponding dual problem:

Primal problem:  max z = c^{T}x
subject to  Ax ≤ b
x ≥ 0

Dual problem:  min w = b^{T}y
subject to  A^{T}y ≥ c
y ≥ 0

In our case we have that c = (\begin{matrix}1600 \\ 1000 \end{matrix}) , A = (\begin{matrix}2 & 1 \\ 2 & 2 \end{matrix}) , and b = (\begin{matrix}6 \\ 8 \end{matrix}) .

Between these two problems there are many relations, forming a theory of linear programming duality and optimality. A few examples are given next.

6.5 Duality theory

For short, let us call the primal problem (P) and the dual problem (D). We note that the dual problem to (D) is (P).

Weak duality: If x is feasible in (P) and y is feasible in (D), then z ≤ w.

Proof: z = c^{T}x ≤ (A^{T}y)^{T}x = y^{T}Ax ≤ y^{T}b = w. □

Strong duality: If (P) and (D) both have feasible solutions, then the two also have optimal solutions, and z^{∗} = w^{∗}.

Proof: See Appendix. □

Complementarity: Let x^{∗} and y^{∗} be optimal solutions to the respective problems (P) and (D). Then,

y_{i}^{∗}[a_{i}x^{∗} − b_{i}] = 0,  i = 1, …, m,
x_{j}^{∗}[(a^{j})^{T}y^{∗} − c_{j}] = 0,  j = 1, …, n,

where a_{i} is row i in the matrix A and a^{j} is column j in the matrix A.

Proof: Since strong duality holds, the two inequalities in the proof of weak duality holds with equality. These two equalities form the complementarity conditions stated in the theorem. □

In other words, if a constraints in (P) is not fulfilled with equality (we then say that there is a slack in the constraint), then its price is zero. In our example, both resources are used to full capacity; otherwise, the value of additional resource would clearly be zero, as we would be uninterested in buying more of something that we do not even use now.

The optimality of a vector x can be summarized with the fact that three conditions are satisfied simultaneously: x is (1) feasible in (P), x corresponds to a dual vector y, the two of which (2) satisfy the complementarity conditions, and y is moreover (3) feasible in (D):

Optimality: If x is feasible in (P) and y is feasible in (D) then they are optimal in its respective problem if, and only if, they have the same objective value, or, equivalently, they together satisfy the complementarity conditions. □

If we have solved one of the problems we can generate an optimal solution to the other one through the complementarity conditions. In the simplex method, complementarity is fulfilled at all times, whereas dual feasibility will be reached precisely when we have reached an optimal solution in (P). Information about the dual optimal solution is provided automatically in the simplex tableau, as well as when using the revised simplex method.

Appendix Farkas’ Lemma and the strong duality theorem

The following result is central in the theory of polyhedral sets:

Farkas’ Lemma (1901): Precisely one of the following two linear systems have a solution:

Ax ≥ 0,  (1a)
c^{T}x < 0  (1b)

A^{T}y = c,  (2a)
y ≥ 0  (2b)

We apply this result on the primal–dual pair

(P) min z = c^{T}x
subject to  Ax ≥ b
x ≥ 0

(D) max w = b^{T}y
subject to  A^{T}y ≤ c
y ≥ 0

Note that weak duality implies that every pair of feasible solutions to (P) and (D) fulfill c^{T}x ≥ b^{T}y.

Proof of the strong duality theorem: Consider the system

Ax  ≥ b,
− A^{T}y ≥ −c,
−c^{T}x + b^{T}y ≥ 0,
x ≥ 0,  y ≥ 0

If this system has a solution, (x, y), then the result follows by weak duality, since then z = w. Suppose therefore that it does not have a solution. A suitable reformulation of the system and an application of Farkas’ Lemma then yields that the following system has a solution:

A^{T}u  − λc ≤ 0,
− Av + λb ≤ 0,
b^{T}u − c^{T}v  > 0,
u ≥ 0,  v ≥ 0  λ ≥ 0

Suppose first that λ > 0. We may, with no loss of generality, assume that λ = 1, since the right-hand sides are zero. We then observe that u, respectively v, are feasible in (P) and (D), with objective values contradicting weak duality. Therefore, λ = 0 must hold. Suppose now that c^{T}v ≥ 0. It then follows that b^{T}u > 0, and through Farkas’ Lemma we conclude that (P) lacks feasible solutions, which is a contradiction. Suppose instead that c^{T}v < 0. Then, from a feasible solution x to (P) we can construct a primal feasible solution x(θ) := x + θv for which it holds that c^{T}x(θ) → −∞ as θ → +∞. From weak duality then follows that the problem (D) lacks feasible solutions, which is a contradiction. The result follows. □

We can also motivate Farkas’ Lemma with the help of strong duality—although the opposite was done before . . ..

Proof of Farkas’ Lemma:

[(1) ⟹ ¬(2)]: Suppose that (1) has a solution, x. If (2) also has a solution, y, it implies that

c^{T}x = y^{T}Ax ≥ 0,

which leads to a contradiction.

[¬(1) ⟹ (2)]: Suppose that (1) lacks solutions. We construct a solution to (2) as follows. Construct the primal–dual pair of linear programs

min z = c^{T}x
subject to  Ax ≥ 0

max w = 0^{T}y
subject to  A^{T}y = c
y ≥ 0

The minimization problem has the optimal solution x^{∗} = 0. According to strong duality, its dual has an optimal solution as well. It is therefore in particular a feasible solution. □