I. Introduction
Optimization is a method to mathematically determine the best allocation of resources in solving a problem, using a set of parameters that are tuned towards the optimal solution in achieving a defined goal [1]. The goal concerned could be in the form of searching for the smallest or the largest value of a function [2], and this could be applied in developing solutions for real-life problems where the application possibilities are boundless. Taking a factory as an example, such function could be applied as a representation of the time or cost taken to manufacture a product, for which a manufacturer will look to minimize, or it could represent the product yield and profit, which will need to be maximized. In this role, optimization methods will make such minimization or maximization possible through the parameter tuning of the optimization function that influences the cost, yield, profit or time to manufacture. Although there is a multitude of different optimization problem types that could exist, majority of them involve two key object classes, one of which is limited resources – such as time, energy, manpower, raw materials, floor-space or production capacity; and the other being the activities that are carried out, both of which serve as the conditional factors to determine how a problem can be best solved [1]. In general, all optimization problems involve the definition of multiple factors, which consists of the variables that were chosen for the optimization, the constraints and the objective function [3].