How to Convert a Nonlinear Programming Problem to Linear Programming

Linear programming problems attempt to find a solution for an objective function, which intends to maximize or minimize a certain value within the realm of a set of constraints. Linear programming problems are well-studied in mathematics, and many algorithms exist that easily lead to their solutions. However, nonlinear programming problems tend to be extremely difficult to solve, which has led to methods to convert them to linear programming problems.

Instructions

    • 1

      Ensure the objective function is concave. You can do this either by proof, using the strict definition of concavity or by graphing the function. If you choose to graph the function, analyze the graph by imagining every set of two points on that function. Ask yourself: "If I were to draw a line between these two points, would the function itself lie above that line?" If the answer is affirmative, then the function is concave, and you can convert the nonlinear programming problem to a linear programming problem.

    • 2

      Choose r break points along the x-axis. Call these break points d(1), d(2), ..., d(r). The number of break points you choose is not entirely important; more break points will give a more accurate conversion but will make the resulting problem more complicated.

    • 3

      Find the corresponding values of the function at those break points. Call them c(1), c(2), ..., c(r).

    • 4

      Calculate the slope for each piece of the now-broken function. The slope is easily calculated for the "kth" piece through s(k) = [c(k)-c(k-1)]/[d(k)-d(k-1)].

    • 5

      Rewrite the objective function, using the sums of slopes instead of the original function. If your original objective function was a function of "x," it will now be a function of "x(i)," where each "i" represents the "ith" piece of the function. In other words, you will have the objective function: sum[x(i)*s(i)] for all i.

    • 6

      Rewrite the constraints. For each constraint, replace "x" with sums of "x(i)," as you did for the objective function. In addition, give "x(i)" the upper bound of d(i)-d(i-1). This completes the conversion of the nonlinear programming problem to a linear one.

Learnify Hub © www.0685.com All Rights Reserved