Hidden Parameters

  1. Parameters File
    1. File Format
    2. Parameter Reference
    3. Example
    4. Attributes
  2. Solver Parameters File
    1. For Solvers
      1. File Format
      2. Examples
    2. For Generic Writer
      1. File Format
      2. Example 1
      3. Example 2

1. Parameters File

1.1. File Format

A number of hidden or 'undocumented' control parameters are available, specific to the version of the simulator. These parameters allow access to certain controls and features that are not available through the user interface. This is often done as a way of providing new features to customers without changing the user interface, and these features may later be included in an updated software version or remain as hidden parameters.

The parameters can be accessed via a special parameters XML file called "PLEXOS_Param.xml". The file should be placed in the same folder as the input file for the executing Model.

The basic structure of the file is as a list of parameters by name and their value, and in some cases a band number. The file must always begin with the following lines:


 <?xml version="1.0" standalone="yes"?>
 <UndocumentedParam xmlns="http://tempuri.org/UndocumentedParam.xsd">
        

and end with this line:


 </UndocumentedParam>
                

Between these lines are blocks of parameter, value pairs in the following format:

   
 <Class>
     <ParameterName> Name </ParameterName>
     <Value> value </Value>
   </Class>
                
Class
The name of the class to which the parameter belongs e.g. "Stochastic".
Name
The name of the parameter e.g. " DecompositionMethod".
value
The value of the parameter e.g. 1.

Class and Name must not contain spaces. For example the class "LT Plan" is written " LTPlan". The parameter values are generally numeric but can be text where allowed.

1.2. Parameter Reference

Each version of PLEXOS has a different set of parameter reference. The following set of links provide details about these hidden parameters.

1.3. Example

This example applies to PLEXOS 6.208 and sets the weight of each stochastic sample according to the example described in the Variable topic:


 <?xml version="1.0" standalone="yes"?>
 <UndocumentedParam xmlns="http://tempuri.org/UndocumentedParam.xsd">

   <Stochastic>
     <ParameterName> SampleWeightingMethod </ParameterName>
     <Value> 1 </Value>
   </Stochastic>

   <Stochastic>
     <ParameterName> SampleWeight </ParameterName>
     <Value> 0.025 </Value>
     <Band> 1 </Band>
   </Stochastic>

   <Stochastic>
     <ParameterName> SampleWeight </ParameterName>
     <Value> 0.2125 </Value>
     <Band> 2 </Band>
   </Stochastic>

   <Stochastic>
     <ParameterName> SampleWeight </ParameterName>
     <Value> 0.525 </Value>
     <Band> 3 </Band>
   </Stochastic>

   <Stochastic>
     <ParameterName> SampleWeight </ParameterName>
     <Value> 0.2125 </Value>
     <Band> 4 </Band>
   </Stochastic>

  <Stochastic>
    <ParameterName> SampleWeight </ParameterName>
    <Value> 0.025 </Value>
    <Band> 5 </Band>
  </Stochastic>

 </UndocumentedParam>
                

1.4. Attributes

The undocumented parameters file also allows any attribute of any simulation object that is currently enabled in a model to be modified by specifying attribute information in "PLEXOS_Param.xml".

Attribute information in "PLEXOS_Param.xml" uses the following format:

 
        <Attributes>
        <Class> Horizon </Class>
        <Name> Base </Name>
        <Attribute> Chrono Step Count </Attribute>
        <Value> 52 </Value>
        </Attributes>
                

Where <Class> specifies the class of the simulation object, <Name> uniquely identifies the object of type Class which is being modified, <Attribute> specifies the attribute which is being modified, and <Value> specifies the value the attribute is being changed to.

In the above example the chronological step count is changed to 52 for the Horizon object called Base.

The full list of all attributes that can be changed can be found in the table "t_attribute" in the file "master.mdb" which is located in the install directory of PLEXOS. All Classes are detailed in the "class_id" column and all attributes are detailed in the "name" column.

Please note the following:

  • Anything specified in the Class and Attribute tags in "PLEXOS_Param.xml" must conform to the names used in "class_id" and "name"
  • All values in the Value tags are to be of type double
  • All date information uses Julian Dates
  • If any simulation objects use foreign characters in their name, please ensure PLEXOS_Param.xml is saved with UTF-8 encoding

Caution is advised when changing attributes as some might require other attributes to be modified that might not be obvious at first.

2. Solver Parameters File

2.1. For Solvers

2.1.1. File Format

The Performance class exposes only the most basic solver parameters. To set other more detailed settings you may use the "PLEXOS_SolverParam.xml" file. The file should be placed in the same folder as the input file for the executing Model.

The basic structure of the file is as a list of parameters identified by solver name, parameter name and value. The file must always begin with the following lines:

 
<?xml version="1.0" standalone="yes"?>
<SolverParam xmlns="http://tempuri.org/SolverParam.xsd">
                

and end with this line:


</SolverParam >
                

Between these lines are blocks of parameter, value pairs in the following format:

   
<Solver>
  <ParameterName> Name </ParameterName>
  <Type> Type </Type>
  <Value> value </Value>
</Solver>
                
Solver
The name of the solver to which the parameter applies e.g. "CPLEX", "Gurobi", "MOSEK", "GLPK" (quotes excluded).
Type
The data type of the parameter (Double, Integer, String)
Name
The name of the parameter e.g. "MAXNODE" (quotes excluded).
value
The value of the parameter e.g. 0.

Solver and Name must not contain spaces.

2.1.2. Examples

The following are examples with comments describing their purpose.

 
<?xml version="1.0" standalone="yes"?>
 <SolverParam xmlns="http://tempuri.org/SolverParam.xsd">

 <!-- =========================== CPLEX =========================== -->

 <!-- Advanced start switch: Set 2 will force CPLEX to store and use incumbent instead of 
 initial solution provided by PLEXOS. Use it only if you are sure -->
  <CPLEX>
    <ParameterName> CPX_PARAM_ADVIND </ParameterName>
    <Type>Integer</Type>
    <Value>2</Value>
  </CPLEX>

 <!-- Repeat Presolve. Parameters (change it to 3 for aggressive presolve after root node):
 CPX_PARAM_REPEATPRESOLVE=-1 (auto)
 CPX_PARAM_REPEATPRESOLVE=0  (off)
 CPX_PARAM_REPEATPRESOLVE=1 (wout cuts)
 CPX_PARAM_REPEATPRESOLVE=2 (w cuts)
 CPX_PARAM_REPEATPRESOLVE=3 (w cuts and new root)
 -->
  <CPLEX>
    <ParameterName> CPX_PARAM_REPEATPRESOLVE </ParameterName>
    <Type>Integer</Type>
    <Value>3</Value>
  </CPLEX>

 <!-- FORCE CPLEX CONCURRENT ROOT NODE: -->
  <CPLEX>
    <ParameterName> CPX_PARAM_STARTALG </ParameterName>
    <Type>Integer</Type>
    <Value>6</Value>
  </CPLEX>

 <!--BALANCED MIP EMPHASIS: -->
  <CPLEX>
    <ParameterName> CPX_PARAM_MIPEMPHASIS </ParameterName>
    <Type>Integer</Type>
    <Value>0</Value>
  </CPLEX>

 <!--POLISH SOLUTION AFTER 1% GAP-->
  <CPLEX>
    <ParameterName> CPX_PARAM_POLISHAFTEREPGAP </ParameterName>
    <Type>Double</Type>
    <Value>0.01</Value>
  </CPLEX>

 <!--POLISH SOLUTION AFTER 6000 secs-->
  <CPLEX>
    <ParameterName> CPX_PARAM_POLISHAFTERTIME </ParameterName>
    <Type>Double</Type>
    <Value>6000.0</Value>
  </CPLEX>

 </SolverParam>

The solver parameters file also allows access to certain controls of any solver by specifying diagnostic undocumented parameters in "PLEXOS_SolverParam.xml" using the following format:

  
<Diagnostic>
  <ParameterName> RelaxationTime </ParameterName>
  <Type>Double</Type>
  <Value>1</Value>
</Diagnostic>
		

In this example, RelaxationTime is a time limit should only be used when the solver is attempting to repair the relaxed MIP problem (after an infeasibility reported).

2.2. For Generic Writer

2.2.1. File Format

The generic writer can also be enabled via the PLEXOS solver parameter file. By default the Generic Writer is disabled, but can be easily enabled via a diagnostic undocumented parameter, for example:

  
<Diagnostic>
  <ParameterName> UseGenericWriter </ParameterName>
  <Type>Boolean</Type>
  <Value>True</Value>
</Diagnostic>
		

The options/settings of the generic writer can be updated using the " GenericWriter" parameters, for example:

  
<GenericWriter>
  <ParameterName> Name </ParameterName>
  <Type>Type</Type>
  <Value>value</Value>
</GenericWriter>
		

The definition of these tags are as follows:

GenericWriter
Indicates a 'Generic Writer' parameter.
Type
The types currently supported are: Double, Integer, Boolean
Name
The name of the parameter e.g. " SortRowColNames" (quotes excluded).
value
The value of the parameter e.g. True.

Note that the Name must not contain spaces.

Example 1 presents all parameters for Generic Writer with comments describing their purpose and default values. Example 2 shows how to set the parameters For Solvers and For Generic Writer together.

2.2.2. Example 1

The following section lists all parameters for the "Generic Writer" with comments describing their purpose and default values.

 
 <?xml version="1.0" standalone="yes"?>
 <SolverParam xmlns="http://tempuri.org/SolverParam.xsd">

 <!-- =========================== For any solver =========================== -->

 <!-- Use Generic Writer or not-->
  <Diagnostic>
    <ParameterName> UseGenericWriter </ParameterName>
    <Type>Boolean</Type>
    <Value>False</Value>
  </Diagnostic>

 <!-- [Only valid when UseGenericWriter is True.] sort row and columns based on alpha-beta or not.-->
  <GenericWriter>
    <ParameterName> SortRowColNames </ParameterName>
    <Type>Boolean</Type>
    <Value>False</Value>
  </GenericWriter>

 <!-- [Only valid when UseGenericWriter is True.] standardize row and column names or not by replacing any spaces and '-' with '_' -->
  <GenericWriter>
    <ParameterName> StandardizeNames </ParameterName>
    <Type>Boolean</Type>
    <Value>False</Value>
  </GenericWriter>

 <!-- [Only valid when UseGenericWriter is True and only perform in .lp file]   range: [0, inf), if Math.ab(value) < ZeroToleranceLP, the value will be truncated to be Zero.-->
  <GenericWriter>
    <ParameterName> ZeroToleranceLP </ParameterName>
    <Type>Double</Type>
    <Value>0</Value>
  </GenericWriter>

 <!-- [Only valid when UseGenericWriter is True and only perform in .sol file] range: [0, inf), similar with ZeroToleranceLP.-->
  <GenericWriter>
    <ParameterName> ZeroToleranceSol </ParameterName>
    <Type>Double</Type>
    <Value>0</Value>
  </GenericWriter>

 <!-- [Only valid when UseGenericWriter is True and only perform in .lp file] range: [0, 15], for a non-zero value, if its Math.abs(val) < Math.Pow(10, -PreciseDigitLP), Then, use Scientific way to present value.
 If it is set outside the range, then it will be assigned with default value. -->
  <GenericWriter>
    <ParameterName> DecimalPlaceLP </ParameterName>
    <Type>Integer</Type>
    <Value>6</Value>
  </GenericWriter>

 <!-- [Only valid when UseGenericWriter is True and only perform in .sol file] range: [0, 15], similar with PreciseDigitLP.-->
  <GenericWriter>
    <ParameterName> DecimalPlaceSol </ParameterName>
    <Type>Integer</Type>
    <Value>6</Value>
  </GenericWriter>

 <!-- [Only valid when UseGenericWriter is True] Strip model name nor not.-->
  <GenericWriter>
    <ParameterName> StripModelName </ParameterName>
    <Type>Boolean</Type>
    <Value>False</Value>
  </GenericWriter>

 <!-- [Only valid when UseGenericWriter is True] Writes the LP files out in algebraic form.-->
  <GenericWriter>
    <ParameterName> Algebraic </ParameterName>
    <Type>Boolean</Type>
    <Value>True</Value>
  </GenericWriter>

 </SolverParam>
		

2.2.3. Example 2

If you want to set both For Solvers and For Generic Writer parameters, then you should put all the parameters you want to set into the same "PLEXOS_SolverParam.xml" file. For example:

 <?xml version="1.0" standalone="yes"?>
 <SolverParam xmlns="http://tempuri.org/SolverParam.xsd">

  <Diagnostic>
    <ParameterName> UseGenericWriter </ParameterName>
    <Type>Boolean</Type>
    <Value>True</Value>
  </Diagnostic>

  <GenericWriter>
    <ParameterName> SortRowColNames </ParameterName>
    <Type>Boolean</Type>
    <Value>True</Value>
  </GenericWriter>

 </SolverParam>