pyOpt has been developed to facilitate reuse and extensibility with the premise that the definition of an optimization problem should be independent of the optimizer. Details for the different classes used in the package can be found below, their relationship is also illustrated in the unified modeling language class diagram below.