设置 CustomerSampleSize
在保持最佳性的同时适当地为最佳 Optimize 会话运行时配置 CustomerSampleSize 进行了一些考虑。
CustomerSampleSize 和“组块”
Optimize 通过将所建议联系分解成称为“组块”的客户随机子样来进行工作。属于单个客户的全部所建议联系以及联系历史记录都是随该客户在其所属组块中处理的。一个客户只能属于单个组块。优化算法的准确度取决于统计上彼此类似的这些客户组块。组块的大小越大,产生此要求的可能性越高。交叉客户容量约束均匀分布在这些组块之间。例如,Optimize 会话包含一条用于指定最多允许存在 1000 个要约 A 的约束。如果该 Optimize 会话通过 10 个组块运行,那么每个组块都具有最多允许 100 个要约 A 的容量规则。
您可使用算法调整变量 CustomerSampleSize 来设置最大组块大小。组块越大,结果越准确。但是,会话运行时间和内存资源也会增加。如果未仔细规划,请不要使用大于 10,000 的组块大小。许多系统没有足够内存资源来同时处理 10,000 个以上客户。这种缺少内存资源的情况会导致 Optimize 会话运行失败,并且出现内存不足错误。在许多情况下,较大的组块大小可能根本不会显著提高解决方案的最佳性,但仍然要用更多时间和内存来运行。以已优化联系表中留存事务的分数总和的形式度量最佳性。根据特定优化问题和性能需要,您可能需要调整 CustomerSampleSize
在未定义任何交叉客户容量规则的简单优化方案中,使用较大的组块大小不会增加任何益处。
CustomerSampleSize 和交叉客户容量规则
要了解使用了交叉客户容量规则的情况,必须了解将这些规则应用于多个组块的方式。请考虑以下情况:存在单条“最小/最大要约数容量”规则,对于渠道电子邮件,最小要约数设置为 20,最大要约容量数为 1,000。如果存在 100,000 个客户并且最大组块大小为 10,000,那么会使用修改的规则(在此情况下,最大值为 100)来处理每个组块。Optimize 通过将规则最大值 (1,000) 除以组块数 (10) 来计算已修改的规则最大值。
较小的最大组块大小可能促使创建较多组块。此设置使规则更可能依赖于数量比组块数少很多的某个元素(例如电子邮件渠道)。如果组块大小减少至 100,那么将存在 1,000 个组块。现在,规则的最小值小于组块数,这使修改的规则值为 0.02(20 除以 1,000)。在此情况下,2% 的组块使用最小值为 1 的规则,其余 98% 的组块使用最小值为 0 的规则。只要每个组块在统计上类似(与电子邮件渠道相关),Optimize 就会按预期方式处理该规则。如果提供有电子邮件的客户数少于存在的组块数,那么会出现问题。如果仅 500 个客户提供有电子邮件,那么每个组块仅有 50% 的机会包含提供有电子邮件的客户。此外,特定组块同时包含提供有电子邮件的客户和最小值为 1 的规则的可能性仅为 1%。Optimize 平均返回的要约数仅为 5,而不是所指定最小数目 20。
组块数取决于组块大小和客户总数。由于最大组块大小为 10,000,因此具有重要元素(规则中使用的项目)的最小客户数必须不少于客户数除以 10,000,以实现最佳结果。看起来增加所建议联系次数以保持统计上的相似性似乎将降低性能,但实际上,所建议联系越多,处理器使用率会越高。如果它允许使用较小的组块大小,那么由于可较快地处理此较小组块,因而此使用率会超过偏移量。