这个问题有“确切”的解决方案吗?

时间:2021-07-14 00:11:55

标签: r algorithm search optimization linear-programming

我正在使用 R。

假设您有以下数据:

#generate data
set.seed(123)
a1 = rnorm(1000,100,10)
b1 = rnorm(1000,100,10)
c1 = rnorm(1000,5,1)
train_data = data.frame(a1,b1,c1)

#view data
         a1        b1       c1
1  94.39524  90.04201 4.488396
2  97.69823  89.60045 5.236938
3 115.58708  99.82020 4.458411
4 100.70508  98.67825 6.219228
5 101.29288  74.50657 5.174136
6 117.15065 110.40573 4.384732

我们可以将数据可视化如下:

#visualize data
par(mfrow=c(2,2))

plot(train_data$a1, train_data$b1, col = train_data$c1, main = "plot of a1 vs b1, points colored by c1")
hist(train_data$a1)
hist(train_data$b1)
hist(train_data$c1)

enter image description here

这是问题

  1. 从数据中,只取变量“a1”和“b1”:使用仅2个“逻辑条件”,将此数据分成3个区域(例如区域 1 WHERE 20 > a1 >0 AND 0< b1 < 25)

  2. 在每个区域中,您希望该区域内的“c1 的平均值”尽可能小——但每个区域必须至少有一些最小数量的数据点,例如100 个数据点(以防止琐碎的解决方案)

  3. 目标:是否有可能确定这 3 个区域的“边界”以使其最小化:

  • 区域 1 的“c1”的平均值
  • 区域 2 的“c1”的平均值
  • 区域 3 的“c1”的平均值
  • “所有 3 个区域的 c1 平均值”的平均值(即 c_avg = (region1_c1_avg + region2_c1_avg + region3_c1_avg) / 3

最后,对于给定的组合,您会发现以下内容,例如(编造数字):

  • 区域 1 : WHERE 20> a1 >0 AND 0 < b1 < 25 ; region1_c1_avg = 4
  • 区域 2 : WHERE 50> a1 >20 AND 25 < b1 < 60 ; region2_c1_avg = 2.9
  • 区域 3:其中 a1>50 且 b1 > 60; region3_c1_avg = 1.9
  • c_avg = (4 + 2.9 + 1.9) / 3 = 2.93

并希望 (region1_c1_avg, region2_c1_avg, region3_c1_avg and c_avg) 最小化

我的问题

这种问题有“确切的解决方案”吗?我唯一能想到的就是执行“随机搜索”,其中考虑了 (Region 1, Region 2 and Region 3) 和比较 (region1_c1_avg, region2_c1_avg, region3_c1_avg and c_avg) 的对应值,直到找到最小值。这是线性规划或多目标优化(例如遗传算法)的应用吗?以前有人做过这样的事情吗?

我做了很多研究,还没有发现类似的问题。我决定将这个问题表述为“多目标约束优化问题”,并想出如何实现“随机搜索”和“遗传算法”等算法。

谢谢

注 1: 在多目标优化的上下文中,对于给定的 (Region1, Region2 and Region3) 定义集:集体比较 (region1_c1_avg, region2_c1_avg, region3_c1_avg and c_avg 的一组值是否}}) 是令人满意的,“帕累托最优”(https://en.wikipedia.org/wiki/Multi-objective_optimization#Visualization_of_the_Pareto_front) 的概念经常被用来比较不同的 {(Region1, Region2 and Region3) 和 (region1_c1_avg, region2_c1_avg, region3_c1_avg and c_avg)}

注意 2:最终,这 3 个区域可以由任意一组 4 个数字定义。如果这 4 个数字中的每一个都可以在“0 到 100”之间,并且通过 0.1 增量(例如 12、12.1、12.2、12.3 等):这意味着存在 1000 ^ 4 = 1 e^12 个可能的解决方案(大约 1万亿)进行比较。有太多的解决方案需要单独验证和比较。我认为基于数学的搜索/优化问题可用于战略性地搜索最佳解决方案。

0 个答案:

没有答案