-1

我需要实施一个人与人之间视觉亲密的项目,有人可以推荐一种算法来计算人与人之间的亲密关系吗?

亲密感会随着时间而衰减(如果您长时间不点击/拨号,亲密感会自动衰减)。

假设在我的通讯录中:</p>

Person     Intimacy(0-100%)
   A         40%
   B         80%
   C         10%

在我跟 A 打电话后,A 的亲密度需要提高,就像这样

Person     Intimacy(0-100%)
   A         42%
   B         80%
   C         10%

跟踪5天后没有任何反应,A,B,C的亲密度需要下降,像这样

Person     Intimacy(0-100%)
   A         37%
   B         78%
   C         8%

谢谢大家的回答

4

1 回答 1

1

亲密感会随着时间而衰减(如果您长时间不点击/拨号,亲密感会自动衰减)。

您可以使用表示为半衰期的指数衰减数

double intimacy = Math.pow(0.5, time / halfLife);

如果您的问题有标准解决方案,我会感到惊讶。


典型的图形具有这样的形状。

在此处输入图像描述


您是否要求一种算法来根据您打电话给他们的频率来确定您对通讯录中某人的了解程度?

为此,您可以再次使用指数加权移动平均线,我只是推测什么可能有用。

你能说得更详细些吗?

从你提供的数据来看,半衰期约为28天。您可以像这样每天使用 EWMA

double alpha = 1.0/28;

score = (contacted ? 1 : 0) * alpha + score * (1 - alpha); 

例如

contacted, prev score, score
TRUE        40%     42%
FALSE       42%     41%
FALSE       41%     39%
FALSE       39%     38%
FALSE       38%     36%
FALSE       36%     35%

假设衰减是 28 天,我给同一个人打电话 200 天。分数看起来像

double score = 0;
double alpha = 1.0 / 28;
boolean contacted = true;
for (int i = 0; i < 200; i++) {
    score = (contacted ? 1 : 0) * alpha + score * (1 - alpha);
    System.out.printf("%.3f%n", score);
}    

印刷

0.036
0.070
0.103
... deleted ...
0.999
0.999
0.999

分数不可能大于最大值(在本例1中为等式)。

于 2012-10-16T10:56:58.563 回答