- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我遇到了一个问题,我无法使用普通的蛮力方法解决。
问题-我试图找到 50 年的组合,一次取 30 年而不重复,这样它们的均值和变异系数位于特定范围内。我正在为此使用 itertools 组合
。但问题是,没有一个总组合是 - 47129212243960
,计算时间太长。有什么方法可以更有效地做到这一点?
数据集具有以下格式-
Yrs Prs_90 Prs_80 Prs_70
2012 499.934588 521.512345 425.189729
2013 579.063531 477.782099 256.382494
2014 458.415624 456.480642 363.309507
我正在计算 Prs_90、Prs_80、Prs_70
的均值和变异系数,然后根据取决于均值和变异系数的阈值找到组合。
编辑-变异系数(CV)=标准偏差(x)/平均值(x)
选择所需组合的条件是-
if (mean >= 501 and <= 570) and ((0.13<=CV<=0.17) or(0.23<=CV<=0.27) or(0.23 <=CV <=27)
或
if (mean >= 451 and <= 460) and ((0.13<=CV<=0.17) or(0.23<=CV<=0.27)
or(0.33 <=CV <=37):
或
if (mean >= 391 and <= 400) and ((0.13<=CV<=0.17) or(0.23<=CV<=0.27)
or(0.33 <=CV <=37)):
我需要上面每一个条件对应的组合。
编辑-我首先按以下格式重新排序上面提供的数据框-
Yrs Prs_80 Prs_70
Prs_90
579.063531 2013 477.782099 256.382494
477.758138 2044 475.458614 259.228592
492.957830 2036 408.590138 281.921215
541.632294 2042 430.990568 290.163454
565.369062 2024 420.107058 296.545395
409.979527 2027 379.740246 301.086631
347.702470 2052 610.775045 307.756455
460.657276 2016 301.774467 309.311562
然后我使用以下方法-
r =30
check1 = 1
check10 = 1
for p in combinations(test4.index,r):
den = np.mean(p)
num = np.std(p)
cv = num/den
if (den >= 561 and den <= 570 ) :
if(cv>=0.13 or cv <= 0.17 and check1):
check1=0
print("Combination 1 done")
elif(den>=391 and den <= 400):
if(cv>=0.13 or cv < 0.17 and check10):
check10 = 0
print("Combination 10 done")
if(check1+check10==0)
break
我在这里只接受 2 个条件,即使那时它正在运行数以亿计的迭代,因此完整处理组合将需要更多时间。
我使用 check1 和 check10 作为信号,因为当我收到以下组合时,我打破了循环。
附加信息-
Prs_90 Prs_80 Prs_70
count 50.000000 50.000000 50.000000
mean 510.732700 445.366865 386.037076
std 113.773333 84.078209 80.987841
min 347.702470 233.335085 256.382494
25% 427.241363 390.745725 320.812298
50% 469.263029 439.407141 383.430153
75% 573.406731 512.019602 433.199140
max 854.819691 610.775045 644.588971
数据的CV为25%。
最佳答案
我说过这样的事情可以作为 MINLP(混合整数非线性规划)模型来解决。让我试一试。
我生成了一些随机数据:
---- 30 PARAMETER p random data
year1 18.003, year2 84.483, year3 55.487, year4 30.813, year5 29.929, year6 23.181
year7 35.633, year8 85.771, year9 7.644, year10 50.521, year11 99.814, year12 58.295
year13 99.122, year14 76.463, year15 13.939, year16 64.332, year17 16.792, year18 25.758
year19 67.224, year20 44.100, year21 36.610, year22 35.793, year23 14.018, year24 15.860
year25 59.322, year26 83.258, year27 23.851, year28 66.908, year29 77.810, year30 31.062
year31 11.939, year32 50.736, year33 16.857, year34 87.374, year35 27.246, year36 29.296
year37 59.802, year38 72.549, year39 63.197, year40 46.916, year41 41.917, year42 12.652
year43 32.107, year44 5.609, year45 34.516, year46 19.028, year47 64.927, year48 56.514
year49 77.226, year50 30.483
---- 30 PARAMETER meanbounds
lo up
mean1 10.000 20.000
mean2 30.000 40.000
mean3 50.000 60.000
---- 30 PARAMETER cvbounds
lo up
cv1 0.500 0.700
cv2 0.900 0.950
---- 30 PARAMETER K = 30.000 number to select
MINLP 模型:
基本上这个模型做了三件事:
x(i)
变量)xm(k1)
)xcv(k2)
)一些结果:
---- 74 VARIABLE x.L select points
year1 1, year2 1, year3 1, year4 1, year5 1, year6 1, year7 1, year9 1, year10 1
year12 1, year16 1, year17 1, year18 1, year20 1, year21 1, year22 1, year23 1, year24 1
year27 1, year30 1, year32 1, year33 1, year35 1, year37 1, year40 1, year42 1, year43 1
year44 1, year46 1, year48 1
---- 74 VARIABLE mu.L = 34.321 mean
VARIABLE sigma.L = 18.843 stdev
VARIABLE cv.L = 0.549 coeff of variation
---- 74 VARIABLE xm.L select mean interval
mean2 1
---- 74 VARIABLE xcv.L select CV interval
cv1 1
我用 Baron 解决了这个问题.至少对于这个数据集,这种方法似乎有效。由于没有目标,这基本上是一个可行性问题。约束规划求解器也可以工作(尽管大多数对浮点变量的支持有限)。
关于 python : Solving a problem of finding a combination which satisfies a particular condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54534925/
我很绝望,现在已经两天(!!)天都没有解决方案来解决以下问题。 更新 Lion 后,我想使用最新版本的 rvm 安装额外的 rubies。 这是我之后调用 bundler 时发生的情况: /Users
我的问题: ajax 调用的无限循环会产生问题吗? 假设有这样的代码: ajaxcall(); function ajaxcall(){ jQuery.ajax({ typ
这是一个有趣的小项目,我已经开始尝试并最大限度地提高赢得办公室曲棍球池的机会。我试图找到最好的方法来选择 20 名能够在最高工资帽内给我最多分数的球员。 例如,假设原始数据由 玩家姓名 位置(前锋,后
我有一个总数为540000的数字列表。我想将此列表分为3个列表,每个列表总共180000。最有效的编程方法是这样做,假设数字列表是一个平面文件,每个数字为线? 最佳答案 听起来像Knapsack pr
抱歉,也许因为我不是英语,我不知道,但我找不到解决几个问题的任何资源;也许我用的词不正确.. 我想了解有关 iPhone 4 和 5 不同分辨率的更多信息。 首先:如果我开发针对 iPhone 4 分
在全局配置缓存后,如 docs ,如果我在 app.module 之外使用 CacheInterceptor,它会抛出错误。 app.module.ts const cacheConfig = {
我无法让 g:each 工作。我正在尝试遍历任何内容,但它永远不起作用 = 不生成任何 html。 索引.gsp Item ${i.name} 用户 Controller .g
在我的 XAML 文件中,我有一个这样声明的 ListBox:
想知道你是否可以帮助我: 我有一个名为initializeAll的方法: public final void initializeAll() { //other stuff........ rand
我尝试过使用 XML 和 JAVA 在我的 Android Activity 中创建一个 ImageView。这两次,我都能够获取我一天前创建的所有其他 PNG 资源以显示在 ImageView 中。
我需要你的帮助。这是什么意思? Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'
这是一段代码 function test() { this.value = "foo"; } $(document).ready(function () { test();
这是一些非常基础的东西。渲染期间引发异常:java.util.Locale.toLanguageTag()Ljava/lang/String; XML: 问题似乎出在 Edit
除其他来源外,我还使用 Stackoverflow 上的各种帖子,尝试实现我自己的 PHP 分类器,以将推文分类为正面、中性和负面类别。在编码之前,我需要弄清楚流程。我的思路和例子如下:
在过去的几周里,每当我在 Eclipse 上使用 SVN 插件时,我都会收到以下错误: Certificate Problem There is a problem with the site's s
我被拒绝运行以下功能(位于 /var/www/mysite/public_html/app/Controllers/Script.php) $structure = '/var/www/mysite/
我正在使用 ctags 为我的 Emacs 创建标签以使用 cygwin 从中读取符号。 Emacs 说 “访问标签表缓冲区:文件/home/superman/tags 不是有效的标签表” 这是我查找
我知道作为一种函数式语言,XSL 没有像传统的 for 循环(而是 for-each)那样的东西。 我正在尝试从可变数量的元素开始创建一个具有固定数量 (7) 的表。总之,我有
我正在使用RavenDB进行一些测试,以基于iphone应用程序存储数据。该应用程序将发送一个带有GPS key 的5个GPS坐标的字符串。我在RavenDB中看到每个文档约为664-668字节。这是
我无法理解我的应用程序的行为。我想创建一个简单的窗口 (1000x700px),分为两部分(分别为 250px 和 750px 宽度)。我尝试了以下代码: import java.awt.Color;
我是一名优秀的程序员,十分优秀!