Use cases that can negatively affect performance

This section lists various use cases that can negatively affect the performance of Unica Optimize.

Smart offer lists with rules using offer versions

If you use smart offer lists with rules that use offer versions, there are additional queries that are used in the IO-intensive data setup section. When the number of offers in the lists is large, and the number of attributes per offer is large, the time that is taken to run these queries can be great.

High maximum for iterations per customer sample

The maximum number of iterations to use for each customer sample is configurable by using the Optimize|AlgorithmTuning|MaxIterationsPerCustomerSample property. Check both the session level advanced settings and the configuration properties.

Depending on the rules and data, this limit might not be reached by a customer sample. High values guarantee the highest level of optimality of the results, but often the use of a greater number of iterations does not make a large enough improvement in optimality to justify the performance penalty. Typically, five iterations yield an acceptable degree of optimality, and it is unusual to see more than about a dozen or so iterations ever required.

To analyze the customer sample iteration behavior, search in the Unica Optimize log for the string Iteration:. This log entry is followed by a number, indicating which iteration it is. Each chunk starts at iteration 1 and counts up. It helps to see what is going on if you get a count of each iteration number in the log, and use the results to construct a histogram.

High number of unprocessable customers

Another major factor in performance is the number of unprocessable customers. If the value of the Optimize|AlgorithmTuning|MaxAlternativesPerCustomerEvaluated property is a large number (over 100 or so), the time penalty is high whenever a customer is unprocessable.

When you have many unprocessable customers, look for logical errors in the rules or data. However, it is possible, especially with large numbers of proposed transactions per customer, that the time needed to get some per-customer solutions is high. If so, it might be best to reduce the value of the MaxAlternativesPerCustomerEvaluated parameter, accepting more unprocessable customers as a trade-off to improve performance.

In Unica Optimize version 7.5.3 and later, there is more detailed logging to show the minimum, maximum, and average number of alternatives that are evaluated for each customer sample.

Solver subroutine calls

If certain combinations of per-customer rules are used, a major performance penalty might be seen in some cases. This situation can occur when there is at least one per-customer Min/Max # Transactions rule where the minimum constraint is not zero, combined with one or more package rules.
Note: In versions older than 7.5.3, "Never A with B" counts as a package rule here.

In addition to having these two rules, their scopes must overlap so both are applied to the same proposed transactions. In addition, the scores must be such that the preferred solution for a package rule causes the "Min/Max" rule to fall below its minimum. If all these conditions are met, the core algorithm cannot find the optimal results in an efficient way, and must use a slower call to the solver engine. You know that this condition is occurring if you see this message in the server log: Solver subroutine parameters:

If you are seeing performance issues from using "Never A with B" rules, the best way to improve performance is to upgrade to Unica Optimize version 7.5.3 or later.

Many cases where scores are the same

If there are many cases where the scores are the same, decision-making in the LRE can sometimes get inefficient. You can tell that this scenario is happening if you see this string in the server log: Additional alternative generated:

To avoid this situation, try assigning more varied scores to the proposed transactions.

High number of agents in the Agent Information table

When there is a high number of agents in the Agent Information table, the performance of the Unica Optimize session is degraded in which the agent rules are used. It is recommended to redesign your campaign and the related Unica Optimize session by splitting the agents into different Agent Information tables and Agent Customer Relationship tables. You must create different campaigns and Unica Optimize sessions according to the split list of agents.

Setting min=0 and max=0 in Capacity rules, for not receiving a particular offer

Generally, if a customer does not want a particular offer to be presented to any of the contacts, customer may use capacity rules with definition "min=0 and max=0". It is recommended for customer to make use of "For each customer rule with min=0 and max=0" and not the capacity rule. Better alternative is not to put such offers that needs to be suppressed in the pre-Optimize Flowchart. Less records written to the PCT, the better performance will be achieved in the session.