<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def lin_moma2(self, objective, wt_obj):
 """Find the smallest redistribution vector using a linear objective. The change in flux distribution is mimimized by minimizing the sum of the absolute values of the differences of wild type FBA solution and the knockout strain flux solution. Creates the constraint that the we select the optimal flux vector that is closest to the wildtype. This might still return an arbitrary flux vector the maximizes the objective function. Args: objective: Objective reaction for the model. wt_obj: The flux value for your wild type objective reactions. Can either use an expiremental value or on determined by FBA by using :meth:`.get_fba_obj_flux(objective)`. """

        reactions = set(self._adjustment_reactions())

        z_diff = self._z_diff
        v = self._v
        v_wt = self._v_wt

        with self.constraints() as constr:
            for f_reaction in reactions:
                # Add the constraint that finds the optimal solution, such
                # that the difference between the wildtype flux
                # is similar to the knockout flux.
                constr.add(
                    z_diff[f_reaction] >= v_wt[f_reaction] - v[f_reaction],
                    v_wt[f_reaction] - v[f_reaction] >= -z_diff[f_reaction])

            # If we minimize the sum of the z vector then we will minimize
            # the |v_wt - v| from above
            self._prob.set_objective(z_diff.sum(reactions))

            constr.add(self._v_wt[objective] >= wt_obj)

            self._solve(lp.ObjectiveSense.Minimize)