Home > matpower7.1 > lib > @opf_model > compute_cost.m

compute_cost

PURPOSE ^

COMPUTE_COST Computes a user-defined cost.

SYNOPSIS ^

function f = compute_cost(om, x, varargin)

DESCRIPTION ^

COMPUTE_COST  Computes a user-defined cost.

   -----  DEPRECATED - use EVAL_LEGACY_COST instead  -----

   F_U = OM.COMPUTE_COST(X)
   F_U = OM.COMPUTE_COST(X, NAME)
   F_U = OM.COMPUTE_COST(X, NAME, IDX_LIST)

   Computes the value of a user defined cost, either for all user
   defined costs or for a named set of costs. When specifying a named set,
   if NAME refers to an indexed name but IDX_LIST is not provided, then
   COMPUTE_COST will be called recursively for all corresponding values
   of IDX_LIST and the costs summed.

   Let X be the full set of optimization variables and F_U(X, CP) be the
   user-defined cost at X, corresponding to the set of cost parameters in
   the CP struct returned by GET_COST_PARAMS, where CP is a struct with the
   following fields:
       N      - nw x nx sparse matrix
       Cw     - nw x 1 vector
       H      - nw x nw sparse matrix (optional, all zeros by default)
       dd, mm - nw x 1 vectors (optional, all ones by default)
       rh, kk - nw x 1 vectors (optional, all zeros by default)

   These parameters are used as follows to compute F_U(X, CP)

       R  = N*x - rh

               /  kk(i),  R(i) < -kk(i)
       K(i) = <   0,     -kk(i) <= R(i) <= kk(i)
               \ -kk(i),  R(i) > kk(i)

       RR = R + K

       U(i) =  /  0, -kk(i) <= R(i) <= kk(i)
               \  1, otherwise

       DDL(i) = /  1, dd(i) = 1
                \  0, otherwise

       DDQ(i) = /  1, dd(i) = 2
                \  0, otherwise

       Dl = diag(mm) * diag(U) * diag(DDL)
       Dq = diag(mm) * diag(U) * diag(DDQ)

       w = (Dl + Dq * diag(RR)) * RR

       F_U(X, CP) = 1/2 * w'*H*w + Cw'*w

   See also OPT_MODEL, ADD_COSTS, PARAMS_LEGACY_COST.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function f = compute_cost(om, x, varargin)
0002 %COMPUTE_COST  Computes a user-defined cost.
0003 %
0004 %   -----  DEPRECATED - use EVAL_LEGACY_COST instead  -----
0005 %
0006 %   F_U = OM.COMPUTE_COST(X)
0007 %   F_U = OM.COMPUTE_COST(X, NAME)
0008 %   F_U = OM.COMPUTE_COST(X, NAME, IDX_LIST)
0009 %
0010 %   Computes the value of a user defined cost, either for all user
0011 %   defined costs or for a named set of costs. When specifying a named set,
0012 %   if NAME refers to an indexed name but IDX_LIST is not provided, then
0013 %   COMPUTE_COST will be called recursively for all corresponding values
0014 %   of IDX_LIST and the costs summed.
0015 %
0016 %   Let X be the full set of optimization variables and F_U(X, CP) be the
0017 %   user-defined cost at X, corresponding to the set of cost parameters in
0018 %   the CP struct returned by GET_COST_PARAMS, where CP is a struct with the
0019 %   following fields:
0020 %       N      - nw x nx sparse matrix
0021 %       Cw     - nw x 1 vector
0022 %       H      - nw x nw sparse matrix (optional, all zeros by default)
0023 %       dd, mm - nw x 1 vectors (optional, all ones by default)
0024 %       rh, kk - nw x 1 vectors (optional, all zeros by default)
0025 %
0026 %   These parameters are used as follows to compute F_U(X, CP)
0027 %
0028 %       R  = N*x - rh
0029 %
0030 %               /  kk(i),  R(i) < -kk(i)
0031 %       K(i) = <   0,     -kk(i) <= R(i) <= kk(i)
0032 %               \ -kk(i),  R(i) > kk(i)
0033 %
0034 %       RR = R + K
0035 %
0036 %       U(i) =  /  0, -kk(i) <= R(i) <= kk(i)
0037 %               \  1, otherwise
0038 %
0039 %       DDL(i) = /  1, dd(i) = 1
0040 %                \  0, otherwise
0041 %
0042 %       DDQ(i) = /  1, dd(i) = 2
0043 %                \  0, otherwise
0044 %
0045 %       Dl = diag(mm) * diag(U) * diag(DDL)
0046 %       Dq = diag(mm) * diag(U) * diag(DDQ)
0047 %
0048 %       w = (Dl + Dq * diag(RR)) * RR
0049 %
0050 %       F_U(X, CP) = 1/2 * w'*H*w + Cw'*w
0051 %
0052 %   See also OPT_MODEL, ADD_COSTS, PARAMS_LEGACY_COST.
0053 
0054 %   MATPOWER
0055 %   Copyright (c) 2008-2017, Power Systems Engineering Research Center (PSERC)
0056 %   by Ray Zimmerman, PSERC Cornell
0057 %
0058 %   This file is part of MATPOWER.
0059 %   Covered by the 3-clause BSD License (see LICENSE file for details).
0060 %   See https://matpower.org for more info.
0061 
0062 f = om.eval_legacy_cost(x, varargin{:});

Generated on Fri 09-Oct-2020 11:21:31 by m2html © 2005