相关文章推荐
OPT = CPLEX_OPTIONS(OVERRIDES) OPT = CPLEX_OPTIONS(OVERRIDES, FNAME) OPT = CPLEX_OPTIONS(OVERRIDES, MPOPT) Sets the values for the options struct normally passed to CPLEXOPTIMSET. Inputs are all optional, second argument must be either a string (FNAME) or a struct (MPOPT): OVERRIDES - struct containing values to override the defaults FNAME - name of user-supplied function called after default options are set to modify them. Calling syntax is: MODIFIED_OPT = FNAME(DEFAULT_OPT); MPOPT - MATPOWER options struct, uses the following fields: opf.violation - used to set opt.simplex.tolerances.feasibility verbose - used to set opt.barrier.display, opt.conflict.display, opt.mip.display, opt.sifting.display, opt.simplex.display, opt.tune.display cplex.lpmethod - used to set opt.lpmethod cplex.qpmethod - used to set opt.qpmethod cplex.opts - struct containing values to use as OVERRIDES cplex.opt_fname - name of user-supplied function used as FNAME, except with calling syntax: MODIFIED_OPT = FNAME(DEFAULT_OPT, MPOPT); cplex.opt - numbered user option function, if and only if cplex.opt_fname is empty and cplex.opt is non-zero, the value of cplex.opt_fname is generated by appending cplex.opt to 'cplex_user_options_' (for backward compatibility with old MATPOWER option CPLEX_OPT). Output is an options struct to pass to CPLEXOPTIMSET. There are multiple ways of providing values to override the default options. Their precedence and order of application are as follows: With inputs OVERRIDES and FNAME 1. FNAME is called 2. OVERRIDES are applied With inputs OVERRIDES and MPOPT 1. FNAME (from cplex.opt_fname or cplex.opt) is called 2. cplex.opts (if not empty) are applied 3. OVERRIDES are applied Example: If cplex.opt = 3, then after setting the default CPLEX options, CPLEX_OPTIONS will execute the following user-defined function to allow option overrides: opt = cplex_user_options_3(opt, mpopt); The contents of cplex_user_options_3.m, could be something like: function opt = cplex_user_options_3(opt, mpopt) opt.threads = 2; opt.simplex.refactor = 1; opt.timelimit = 10000; For details on the available options, see the "Parameters of CPLEX" section of the CPLEX documentation at: http://pic.dhe.ibm.com/infocenter/cosinfoc/v12r6/ See also CPLEXLP, CPLEXQP, MPOPTION .

CROSS-REFERENCE INFORMATION ^

This function calls:
  • nested_struct_copy NESTED_STRUCT_COPY Copies values from one nested struct to another.
  • This function is called by:
  • dcopf_solver DCOPF_SOLVER Solves a DC optimal power flow.
  • qps_cplex QPS_CPLEX Quadratic Program Solver based on CPLEX.
  • t_qps_matpower T_QPS_MATPOWER Tests of QPS_MATPOWER QP solvers.
  • SOURCE CODE ^

    0001 function opt = cplex_options(overrides, mpopt)
    0002 %CPLEX_OPTIONS  Sets options for CPLEX.
    0003 %
    0004 %   OPT = CPLEX_OPTIONS
    0005 %   OPT = CPLEX_OPTIONS(OVERRIDES)
    0006 %   OPT = CPLEX_OPTIONS(OVERRIDES, FNAME)
    0007 %   OPT = CPLEX_OPTIONS(OVERRIDES, MPOPT)
    0008 %
    0009 %   Sets the values for the options struct normally passed to
    0010 %   CPLEXOPTIMSET.
    0011 %
    0012 %   Inputs are all optional, second argument must be either a string
    0013 %   (FNAME) or a struct (MPOPT):
    0014 %
    0015 %       OVERRIDES - struct containing values to override the defaults
    0016 %       FNAME - name of user-supplied function called after default
    0017 %           options are set to modify them. Calling syntax is:
    0018 %                   MODIFIED_OPT = FNAME(DEFAULT_OPT);
    0019 %       MPOPT - MATPOWER options struct, uses the following fields:
    0020 %           opf.violation    - used to set opt.simplex.tolerances.feasibility
    0021 %           verbose          - used to set opt.barrier.display,
    0022 %               opt.conflict.display, opt.mip.display, opt.sifting.display,
    0023 %               opt.simplex.display, opt.tune.display
    0024 %           cplex.lpmethod   - used to set opt.lpmethod
    0025 %           cplex.qpmethod   - used to set opt.qpmethod
    0026 %           cplex.opts       - struct containing values to use as OVERRIDES
    0027 %           cplex.opt_fname  - name of user-supplied function used as FNAME,
    0028 %               except with calling syntax:
    0029 %                   MODIFIED_OPT = FNAME(DEFAULT_OPT, MPOPT);
    0030 %           cplex.opt        - numbered user option function, if and only if
    0031 %               cplex.opt_fname is empty and cplex.opt is non-zero, the value
    0032 %               of cplex.opt_fname is generated by appending cplex.opt to
    0033 %               'cplex_user_options_' (for backward compatibility with old
    0034 %               MATPOWER option CPLEX_OPT).
    0035 %
    0036 %   Output is an options struct to pass to CPLEXOPTIMSET.
    0037 %
    0038 %   There are multiple ways of providing values to override the default
    0039 %   options. Their precedence and order of application are as follows:
    0040 %
    0041 %   With inputs OVERRIDES and FNAME
    0042 %       1. FNAME is called
    0043 %       2. OVERRIDES are applied
    0044 %   With inputs OVERRIDES and MPOPT
    0045 %       1. FNAME (from cplex.opt_fname or cplex.opt) is called
    0046 %       2. cplex.opts (if not empty) are applied
    0047 %       3. OVERRIDES are applied
    0048 %
    0049 %   Example:
    0050 %
    0051 %   If cplex.opt = 3, then after setting the default CPLEX options,
    0052 %   CPLEX_OPTIONS will execute the following user-defined function
    0053 %   to allow option overrides:
    0054 %
    0055 %       opt = cplex_user_options_3(opt, mpopt);
    0056 %
    0057 %   The contents of cplex_user_options_3.m, could be something like:
    0058 %
    0059 %       function opt = cplex_user_options_3(opt, mpopt)
    0060 %       opt.threads          = 2;
    0061 %       opt.simplex.refactor = 1;
    0062 %       opt.timelimit        = 10000;
    0063 %
    0064 %   For details on the available options, see the "Parameters of CPLEX"
    0065 %   section of the CPLEX documentation at:
    0066 %
    0067 %       http://pic.dhe.ibm.com/infocenter/cosinfoc/v12r6/
    0068 %
    0069 %   See also CPLEXLP, CPLEXQP, MPOPTION.
    0071 %   MATPOWER
    0072 %   $Id: cplex_options.m 2365 2014-07-24 17:21:35Z ray $
    0073 %   by Ray Zimmerman, PSERC Cornell
    0075 %
    0076 %   This file is part of MATPOWER.
    0077 %   See http://www.pserc.cornell.edu/matpower/ for more info.
    0078 %
    0079 %   MATPOWER is free software: you can redistribute it and/or modify
    0080 %   it under the terms of the GNU General Public License as published
    0081 %   by the Free Software Foundation, either version 3 of the License,
    0082 %   or (at your option) any later version.
    0083 %
    0084 %   MATPOWER is distributed in the hope that it will be useful,
    0085 %   but WITHOUT ANY WARRANTY; without even the implied warranty of
    0086 %   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    0087 %   GNU General Public License for more details.
    0088 %
    0089 %   You should have received a copy of the GNU General Public License
    0090 %   along with MATPOWER. If not, see <http://www.gnu.org/licenses/>.
    0091 %
    0092 %   Additional permission under GNU GPL version 3 section 7
    0093 %
    0094 %   If you modify MATPOWER, or any covered work, to interface with
    0095 %   other modules (such as MATLAB code and MEX-files) available in a
    0096 %   MATLAB(R) or comparable environment containing parts covered
    0097 %   under other licensing terms, the licensors of MATPOWER grant
    0098 %   you additional permission to convey the resulting work.
    0100 %%-----  initialization and arg handling  -----
    0101 %% defaults
    0102 verbose = 1;
    0103 feastol = 1e-6;
    0104 fname   = '';
    0106 %% second argument
    0107 if nargin > 1 && ~isempty(mpopt)
    0108     if ischar(mpopt)        %% 2nd arg is FNAME (string)
    0109         fname = mpopt;
    0110         have_mpopt = 0;
    0111     else                    %% 2nd arg is MPOPT (MATPOWER options struct)
    0112         have_mpopt = 1;
    0113         %% (make default opf.violation correspond to default CPLEX feastol)
    0114         feastol  = mpopt.opf.violation/5;
    0115         verbose  = mpopt.verbose;
    0116         if isfield(mpopt.cplex, 'opt_fname') && ~isempty(mpopt.cplex.opt_fname)
    0117             fname = mpopt.cplex.opt_fname;
    0118         elseif mpopt.cplex.opt
    0119             fname = sprintf('cplex_user_options_%d', mpopt.cplex.opt);
    0120         end
    0121     end
    0122 else
    0123     have_mpopt = 0;
    0124 end
    0126 %%-----  set default options for CPLEX  -----
    0127 opt = cplexoptimset('cplex');
    0128 opt.simplex.tolerances.feasibility = feastol;
    0129 opt.output.clonelog = -1;
    0131 %% printing
    0132 vrb = max([0 verbose-1]);
    0133 opt.barrier.display   = vrb;
    0134 opt.conflict.display  = vrb;
    0135 opt.mip.display       = vrb;
    0136 opt.sifting.display   = vrb;
    0137 opt.simplex.display   = vrb;
    0138 opt.tune.display      = vrb;
    0139 if verbose > 2
    0140     opt.Display = 'iter';
    0141 elseif verbose > 1
    0142     opt.Display = 'on';
    0143 elseif verbose > 0
    0144     opt.Display = 'off';
    0145 end
    0147 %% solution algorithm
    0148 if have_mpopt
    0149     opt.lpmethod = mpopt.cplex.lpmethod;
    0150     opt.qpmethod = mpopt.cplex.qpmethod;
    0151 end
    0153 %%-----  call user function to modify defaults  -----
    0154 if ~isempty(fname)
    0155     if have_mpopt
    0156         opt = feval(fname, opt, mpopt);
    0157     else
    0158         opt = feval(fname, opt);
    0159     end
    0160 end
    0162 %%-----  apply overrides  -----
    0163 if have_mpopt && isfield(mpopt.cplex, 'opts') && ~isempty(mpopt.cplex.opts)
    0164     opt = nested_struct_copy(opt, mpopt.cplex.opts);
    0165 end
    0166 if nargin > 0 && ~isempty(overrides)
    0167     opt = nested_struct_copy(opt, overrides);
    0168 end
    0171 %--------------------------  Default Options Struct  --------------------------
    0172 % as returned by ...
    0173 %   >> opt = cplexoptimset('cplex')
    0174 %
    0175 %   opt =
    0176 %       advance:        1
    0177 %       barrier:        [1x1 struct]
    0178 %           algorithm:      0
    0179 %           colnonzeros:    0
    0180 %           convergetol:    1.0000e-08
    0181 %           crossover:      0
    0182 %           display:        1
    0183 %           limits:         [1x1 struct]
    0184 %               corrections:    -1
    0185 %               growth:         1.0000e+12
    0186 %               iteration:      9.2234e+18
    0187 %               objrange:       1.0000e+20
    0188 %           ordering:       0
    0189 %           qcpconvergetol: 1.0000e-07
    0190 %           startalg:       1
    0191 %       clocktype:      2
    0192 %       conflict:       [1x1 struct]
    0193 %           display:        1
    0194 %       diagnostics:    'off'
    0195 %       emphasis:       [1x1 struct]
    0196 %           memory:         0
    0197 %           mip:            0
    0198 %           numerical:      0
    0199 %       exportmodel:    ''
    0200 %       feasopt:        [1x1 struct]
    0201 %           mode:           0
    0202 %           tolerance:      1.0000e-06
    0203 %       lpmethod:       0
    0204 %       mip:            [1x1 struct]
    0205 %           cuts:           [1x1 struct]
    0206 %               cliques:        0
    0207 %               covers:         0
    0208 %               disjunctive:    0
    0209 %               flowcovers:     0
    0210 %               gomory:         0
    0211 %               gubcovers:      0
    0212 %               implied:        0
    0213 %               mcfcut:         0
    0214 %               mircut:         0
    0215 %               pathcut:        0
    0216 %               zerohalfcut:    0
    0217 %           display:        2
    0218 %           interval:       0
    0219 %           limits:         [1x1 struct]
    0220 %               aggforcut:      3
    0221 %               auxrootthreads: 0
    0222 %               cutpasses:      0
    0223 %               cutsfactor:     4
    0224 %               eachcutlimit:   2.1000e+09
    0225 %               gomorycand:     200
    0226 %               gomorypass:     0
    0227 %               nodes:          9.2234e+18
    0228 %               polishtime:     0
    0229 %               populate:       20
    0230 %               probetime:      1.0000e+75
    0231 %               repairtries:    0
    0232 %               solutions:      9.2234e+18
    0233 %               strongcand:     10
    0234 %               strongit:       0
    0235 %               submipnodelim:  500
    0236 %               treememory:     1.0000e+75
    0237 %           ordertype:      0
    0238 %           polishafter:    [1x1 struct]
    0239 %               absmipgap:      0
    0240 %               mipgap:         0
    0241 %               nodes:          9.2234e+18
    0242 %               solutions:      9.2234e+18
    0243 %               time:           1.0000e+75
    0244 %           pool:           [1x1 struct]
    0245 %               absgap:         1.0000e+75
    0246 %               capacity:       2.1000e+09
    0247 %               intensity:      0
    0248 %               relgap:         1.0000e+75
    0249 %               replace:        0
    0250 %           strategy:       [1x1 struct]
    0251 %               backtrack:      0.9999
    0252 %               bbinterval:     7
    0253 %               branch:         0
    0254 %               dive:           0
    0255 %               file:           1
    0256 %               fpheur:         0
    0257 %               heuristicfreq:  0
    0258 %               kappastats:     0
    0259 %               lbheur:         0
    0260 %               miqcpstrat:     0
    0261 %               nodeselect:     1
    0262 %               order:          1
    0263 %               presolvenode:   0
    0264 %               probe:          0
    0265 %               rinsheur:       0
    0266 %               search:         0
    0267 %               startalgorithm: 0
    0268 %               subalgorithm:   0
    0269 %               variableselect: 0
    0270 %           tolerances:     [1x1 struct]
    0271 %               absmipgap:      1.0000e-06
    0272 %               integrality:    1.0000e-05
    0273 %               lowercutoff:    -1.0000e+75
    0274 %               mipgap:         1.0000e-04
    0275 %               objdifference:  0
    0276 %               relobjdifference: 0
    0277 %               uppercutoff:    1.0000e+75
    0278 %       output:         [1x1 struct]
    0279 %           clonelog:       1
    0280 %           intsolfileprefix: ''
    0281 %           mpslong:        1
    0282 %           writelevel:     0
    0283 %       parallel:       0
    0284 %       preprocessing:  [1x1 struct]
    0285 %           aggregator:     -1
    0286 %           boundstrength:  -1
    0287 %           coeffreduce:    -1
    0288 %           dependency:     -1
    0289 %           dual:           0
    0290 %           fill:           10
    0291 %           linear:         1
    0292 %           numpass:        -1
    0293 %           presolve:       1
    0294 %           qpmakepsd:      1
    0295 %           reduce:         3
    0296 %           relax:          -1
    0297 %           repeatpresolve: -1
    0298 %           symmetry:       -1
    0299 %       qpmethod:       0
    0300 %       read:           [1x1 struct]
    0301 %           apiencoding:    ''
    0302 %           constraints:    30000
    0303 %           datacheck:      0
    0304 %           fileencoding:   'ISO-8859-1'
    0305 %           nonzeros:       250000
    0306 %           qpnonzeros:     5000
    0307 %           scale:          0
    0308 %           variables:      60000
    0309 %       sifting:        [1x1 struct]
    0310 %           algorithm:      0
    0311 %           display:        1
    0312 %           iterations:     9.2234e+18
    0313 %       simplex:        [1x1 struct]
    0314 %           crash:          1
    0315 %           dgradient:      0
    0316 %           display:        1
    0317 %           limits:         [1x1 struct]
    0318 %               iterations:     9.2234e+18
    0319 %               lowerobj:       -1.0000e+75
    0320 %               perturbation:   0
    0321 %               singularity:    10
    0322 %               upperobj:       1.0000e+75
    0323 %           perturbation:   [1x1 struct]
    0324 %               indicator:      0
    0325 %               constant:       1.0000e-06
    0326 %           pgradient:      0
    0327 %           pricing:        0
    0328 %           refactor:       0
    0329 %           tolerances:     [1x1 struct]
    0330 %               feasibility:    1.0000e-06
    0331 %               markowitz:      0.0100
    0332 %               optimality:     1.0000e-06
    0333 %       solutiontarget: 0
    0334 %       threads:        0
    0335 %       timelimit:      1.0000e+75
    0336 %       tune:           [1x1 struct]
    0337 %           display:        1
    0338 %           measure:        1
    0339 %           repeat:         1
    
     
    推荐文章