Data Science PT 10: Optimization/Dynamic Programming
Optimization is the selection of a best element from some set of available alternatives with regard to some criterion.
There are several applications of this optimization here. One example is classroom schedule, based on the constraints availability of rooms, proximity of classroom to department, day/time preferences, size of rooms, class enrollment, and student course interest conflicts. Another application is seeking a solution with the smallest ℓ1 norm. The ℓ1 Norm is the sum of the magnitudes of the vectors in a space. It is the most natural way of measure distance between vectors.
A 3rd application is reducing fuel consumption, whether to push a engine up a hill or coast down, or what to do to minimize gas usage. Another application is the process design in factories. We want to buy less inputs and use less energy, and produce the product quickly and flexible to surprises. We want to tune production process to minimize all "costs" in previous sentence. This is also known as multi-objective optimization.
Dynamic Programming is solving a complex problem by breaking it down into simpler subproblems. We want to partition a problem into parts linking the past, present, and future. This resembles divide and conquer in which we have a large problem, that we partition into parts. The dynamic nature of problem links the past, present, and future. Again, we want a decision whose "combined costs" is the best. DP is much faster than brute force computation.
In a problem setting we got the time t, time horizon T, state Xt, Possible actions 𝑎𝑡 ∈ Γ(𝑥𝑡). We also define T(x, a) as the next state upon choosing action a and F(x, a) as the payoff from action a. We want to maximize payoff upon horizon T. We have basis case T = t - 1 having one time left for an action. We maximize payoff with this equation:
a* =arg maxa∈ΓF(xt ,a)
At the end of problem, arrive at state XT=T(x,a *) where we will evaluate the payoff one more time. We want optimal cost to account for current payoff and payoff in next step.
In brute force optimization, we have Γ actions per time step and T time steps. We need to evaluate Θ(Γ^T) actions, where in Dynamic Programming we only have to evaluate Θ(ΓT). There are deterministic/random and finite/infinite horizon. In deterministic/random, the next state and payoff can be random so we need to account for those (there can be more users than expected). In finite/infinite horizon, we have to define a discount rate β which decreases importance as the horizon increases.







Comments
Post a Comment