Campaign | partitions | partition[n] | Optimize | AlgorithmTuning

These configuration properties define settings that you can use to tune your optimizations.

MaxAlternativesPerCustomerEvaluated

Description

The maximum number of times Contact Optimization tests combinations of proposed transactions, or alternatives, to find the optimal alternative for a customer.

For example, if the following are true:

  • The offers that are associated with a customer in the proposed contacts table (PCT) are A,B,C,D, where the scores for these offers are A=8, B=4, C=2, D=1

  • The MaxAlternativesPerCustomerEvaluated property is 5

  • A rule of MAX # Offers=3 exists

Then, the alternatives that are tried might be as follows:

  • ABC score = 14

  • ABD score = 13

  • AB score = 12

  • ACD score = 11

  • AC score = 10

Because the number of alternatives to test might be large, this value limits the effort the core algorithm spends on a customer before Contact Optimization moves to the next customer in the PCT.

Default value

1000

CustomerSampleSize

Description

If your number of customers that are optimized is greater than CustomerSampleSize, Contact Optimization divides the customers into groups of no greater than CustomerSampleSize. Contact Optimization then optimizes each sample group separately. Rules that span across groups, such as a Custom Capacity rule, are still met. Increasing this number might increase optimality but hinder performance.

The most optimal CustomerSampleSize is equal to your number of customers. However, processing a large set of data might take a prohibitive amount of time. By dividing customers into smaller groups for Contact Optimization to process at a time, you can increase performance with minimal loss to optimality.

Default value

1000

Valid Values

Positive integer

MaxIterationsPerCustomerSample

Description

The maximum number of iterations Contact Optimization processes a group of customers. Contact Optimization processes a group of customers until optimality is reached or the number of iterations equals MaxIterationsPerCustomerSample.

Search for the following information in the session log to observe the effect of setting changes for MaxIterationsPerCustomerSample.

  • Maximum, minimum, and mean number of iterations per customer chunk

  • Maximum, minimum, and mean number of alternatives that are created per customer

  • Maximum, minimum, and mean number of alternatives that are tried per customer

  • Standard deviation of iterations

Default value

1000

Valid Values

Positive integer

CustomerRandomSeed

Description

The random seed represents the starting point that Contact Optimization uses to select records randomly before Contact Optimization populates sample groups that are defined by the CustomerSampleSize. If you have fewer customers than CustomerSampleSize, this property has no effect on the optimization.

You might want to change the random seed if you think your current random sample produces highly skewed results.

Default value

1928374656

Valid Values

Positive integer

MaxCustomerSampleProcessingThreads

Description

The maximum number of threads Contact Optimization uses to process the optimization algorithms. In general, the higher you set MaxCustomerSampleProcessingThreads, the more you might improve performance. However, the performance increase is limited by several factors, including the type and number of optimization rules you use and your hardware. For detailed instructions on tuning your Contact Optimization implementation, contact your HCL® representative.

Default value

1

Valid Values

Positive integer

ProcessingThreadQueueSize

Description

The number of threads available to Contact Optimization to use to read a customer sample from the PCT. Increasing the number of threads might improve the performance of a Contact Optimization session. For detailed instructions on tuning your Contact Optimization implementation, contact your HCL representative.

Default value

1

Valid Values

Positive integer

PostProcessingThreadQueueSize

Description

The number of threads available to Contact Optimization to write a customer sample to a staging table for the OCT. Increasing the number of threads might improve the performance of a Contact Optimization session. For detailed instructions on tuning your Contact Optimization implementation, contact your HCL representative.

Default value

1

Valid Values

Positive integer

EnableMultithreading

Description

If true, Contact Optimization attempts to use multiple threads when processing the optimization algorithms. You can configure the number of threads with the MaxCustomerSampleProcessingThreads, ProcessingThreadQueueSize, and PostProcessingThreadQueueSize configuration properties. If false, Contact Optimization uses a single thread when processing the optimization algorithms.

Default value

True

Valid Values

True | False

EnableMaxCapacityConsumption

Description

If you get Contact Optimization results that underuse the channel capacities, enable EnableMaxCapacityConsumption to reduce the loss of channel capacity. Then, rerun the Contact Optimization session. If the parameter is set to true, Contact Optimization uses an enhanced algorithm for trying to meet maximum constraints that are set in Cross Customer rules (Min/Max # Offers Capacity rule and Custom capacity rule). However, if this is used, the session run time might increase depending on the data that is provided to the session.

Default value

False

Valid Values

True | False

EnableBufferingHistoryTransactions

Description

If true, Contact Optimization writes contact history transactions to a file to read during a Contact Optimization session run. If false, Contact Optimization reads from the UA_ContactHistory table in the Campaign system tables.

If false, Contact Optimization creates a read lock on the UA_ContactHistory table for the length of the Contact Optimization session. This lock might cause attempts to write to the table to fail if you are using a database load utility. If true, Contact Optimization creates a read lock on the table only for the time it takes to write the query to a file.

Default value

False

Valid Values

True | False

MinImprovementPercent

Description

Use this configuration property to stop processing a group of customers when the rate of optimization reaches a specified level. The MinImprovmentPercent property sets a rate of score improvement, which is measured as a percentage, to continue iterating. The default is zero, which means that there is no limit to the number of iterations possible.

Default value

0.0

UseFutureContacts

Description

If you are not using time periods in any of your optimization rules, you can prevent Contact Optimization from querying the Contact History tables to improve performance. You can control this behavior with the UseFutureContacts configuration property.

If you set UseFutureContacts to false, and the optimization rules for your Contact Optimization session do not use time periods, Contact Optimization does not query the Contact History tables. This setting improves the time that is needed to run the Contact Optimization session. However, if the Contact Optimization session uses time periods, Contact History tables are queried.

If you record potential future contacts in Contact History, you must set UseFutureContacts to true. For example, if you know that you are sending an email communication next week about a special promotion to certain customers, those contacts might already be in the Contact History tables as placeholders. In this case, set UseFutureContacts to true and Contact Optimization always queries the Contact History tables.

Default value

False

Valid Values

True | False

ContinueOnGenerationLoopError

Description

If False, Contact Optimization stops the Contact Optimization session if it is not possible to process a set of customers for the following reasons:

  • The outer algorithm cannot satisfy the capacity rules with any of its alternate solutions.
  • The core algorithm is not creating alternative solutions.

Contact Optimization logs this condition with the following error:

The generation loop was unable to eliminate all slack 
and surplus variables

If True, Contact Optimization skips all the customers in the set that triggered the generation loop error. Contact Optimization then continues processing the next customer set in the Contact Optimization session. It is possible that Contact Optimization might have violated some rules and generated this result without honoring all rules and data. If Optimize|logging|enableBailoutLogging property is also set to TRUE, the skipped customers are logged to unprocessables_10-digit-session-ID.csv in the partition/partition[n]/logs directory in the Contact Optimization installation directory. Customers skipped because of the generation loop error have the reason SkippedOnGenerationLoopError.

See the Contact Optimization Troubleshooting and Tuning Guide for details about how to avoid the generation loop error.

Default value

False

Valid Values

True | False