

simplex(boot)                                R Documentation

_S_i_m_p_l_e_x _M_e_t_h_o_d _f_o_r _L_i_n_e_a_r _P_r_o_g_r_a_m_m_i_n_g _P_r_o_b_l_e_m_s

_D_e_s_c_r_i_p_t_i_o_n_:

     This function will optimize the linear function `a%*%x'
     subject to the constraints `A1%*%x <= b1', `A2%*%x >=
     b2', `A3%*%x = b3' and `x >= 0'.  Either maximization
     or minimization is possible but the default is mini-
     mization.

_U_s_a_g_e_:

     simplex(a, A1=NULL, b1=NULL, A2=NULL, b2=NULL, A3=NULL,
             b3=NULL, maxi=F, n.iter=NULL, eps=1e-06)

_A_r_g_u_m_e_n_t_s_:

       a: A vector of length `n' which gives the coeffi-
          cients of the objective function.

      A1: An `m1' by `n' matrix of coefficients for the "<="
          type of constraints.

      b1: A vector of length `m1' giving the right hand side
          of the "<=" constraints.  This argument is
          required if `A1' is given and ignored otherwise.
          All values in `b1' must be non-negative.

      A2: An `m2' by `n' matrix of coefficients for the ">="
          type of constraints.

      b2: A vector of length `m2' giving the right hand side
          of the ">=" constraints.  This argument is
          required if `A2' is given and ignored otherwise.
          All values in `b2' must be non-negative.  Note
          that the constraints `x >= 0' are included auto-
          matically and so should not be repeated here.

      A3: An `m3' by `n' matrix of coefficients for the
          equality constraints.

      b3: A vector of length `m3' giving the right hand side
          of equality constraints.  This argument is
          required if `A3' is given and ignored otherwise.
          All values in `b3' must be non-negative.

    maxi: A logical flag which specifies minimization if
          `FALSE' (default) and maximization otherwise.  If
          `maxi' is `TRUE' then the maximization problem is
          recast as a minimization problem by changing the
          objective function coefficients to their nega-
          tives.

  n.iter: The maximum number of iterations to be conducted
          in each phase of the simplex method.  The default
          is `n+2*(m1+m2+m3)'.

     eps: The floating point tolerance to be used in tests
          of equality.

_D_e_t_a_i_l_s_:

     The method employed by this function is the two phase
     tableau simplex method.  If there are ">=" or equality
     constraints an initial feasible solution is not easy to
     find.  To find a feasible solution an artificial vari-
     able is introduced into each ">=" or equality con-
     straint and an auxiliary objective function is defined
     as the sum of these artificial variables.  If a feasi-
     ble solution to the set of constraints exists then the
     auxiliary objective will be minimized when all of the
     artificial variables are 0.  These are then discarded
     and the original problem solved starting at the solu-
     tion to the auxiliary problem.  If the only constraints
     are of the "<=" form, the origin is a feasible solution
     and so the first stage can be omitted.

_V_a_l_u_e_:

     An object of class `"simplex"'.

_N_O_T_E_:

     The method employed here is suitable only for rela-
     tively small systems.  Also if possible the number of
     constraints should be reduced to a minimum in order to
     speed up the execution time which is approximately pro-
     portional to the cube of the number of constraints.  In
     particular if there are any constraints of the form
     `x[i] >= b2[i]' they should be omitted by setting `x[i]
     = x[i]-b2[i]', changing all the constraints and the
     objective function accordingly and then transforming
     back after the solution has been found.

_R_e_f_e_r_e_n_c_e_s_:

     Gill, P.E., Murray, W. and Wright, M.H. (1991) Numeri-
     cal Linear Algebra and Optimization Vol. 1. Addison-
     Wesley.

     Press, W.H., Teukolsky, S.A., Vetterling, W.T. and
     Flannery, B.P. (1992) Numerical Recipes: The Art of
     Scientific Computing (Second Edition).  Cambridge Uni-
     versity Press.

_E_x_a_m_p_l_e_s_:

     #  This example is taken from Exercise 7.5 of Gill, Murray,
     #  and Wright (1991).
     enj <- c(200, 6000, 3000, -200)
     fat <- c(800, 6000, 1000, 400)
     vitx <- c(50, 3, 150, 100)
     vity <- c(10, 10, 75, 100)
     vitz <- c(150, 35, 75, 5)
     simplex(a=enj, A1=fat, b1=13800, A2=rbind(vitx, vity, vitz),
             b2=c(600, 300, 550), maxi=T)

