- 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/
我写了一个我认为是 quite interesting question 的答案,但不幸的是,在我发布之前,该问题已被作者删除。我在这里重新发布问题的摘要和我的答案,以防其他人有用。 假设我有一个 S
有没有办法写约束: C t1 t2 :: Constraint 如果 t2 与 t1 匹配,它“满足”(这是正确的词)。 例如: C (forall a. Num a => a -> a -> a)
我正在尝试用这段代码求解方程: a = [-0.0008333 -0.025 -0.6667 -20]; length_OnePart = 7.3248; xi = -6.4446; yi = -16
我知道我可以关闭 MySQL 中的安全模式,所以我不会尝试解决这个问题。 我有一个简单的表格: create table rubbish( id int auto_increment prim
尝试刷新我的 sencha extjs 应用程序并总是收到此错误: 命令: sencha 应用程序刷新 sencha 应用升级 总是同样的错误: [ERR] Cannot satisfy requir
我正在尝试为我的项目创建一个测试套件,HaskSplit在我的 .cabal 配置中: -- Initial HaskSplit.cabal generated by cabal init. For
我有 pc/sc 读卡器和非接触式卡(mifare 卡),我可以连接到该卡,并且我也成功执行 getdate 命令,但是当我想进行身份验证时,我看到此错误“6982:安全状态不满足”我已经尝试了这 3
简而言之,流程如下: inputChannel->transformer->firstOutboundAdapter->pollingOutboundAdapter 概要:inputChannel 接
这个问题在这里已经有了答案: Why do try!() and ? not compile when used in a function that doesn't return Option o
我正在尝试切片矢量并在 Rust 中同时打印它。这是我的代码: fn main() { let a = vec![1, 2, 3, 4]; println!("{:?}", a[1..
我正在尝试自定义约束 菜单栏类: import UIKit class ManuBar: UIView { override init(frame: CGRect) { sup
我遇到了这个问题,我有一个聊天服务器需要与托管在 aws 中的 lambda 服务进行通信,但云前端会引发以下错误。 BODY: ERROR: The request could not be s
我有一个包含Arc>的结构,我试图添加一个获取self所有权的方法,并将所有权移到新线程中并启动它。但是,我得到了错误 error[E0277]: the trait bound `std::sync
我遇到了一个编译错误,似乎突出显示了我对类型系统不了解的内容。 我想将字符串转换为整数,如果字符串不是有效整数,则带有自定义 panic 消息。我做一个match在 Result由 parse() 返
这是应用过滤器后复制数据的代码。 Sub read_excel_file(path_to_current_work_book As String, path_to_destination_work
我们有一个 shell 脚本,可以自动准备虚拟环境,然后在其中运行测试。部分脚本安装要求: pip install -r requirements.txt 当脚本多次运行时,它会针对每个要求打印一条警
总是遇到 FoodTracker 教程;遵循此步骤:“实现自定义控件” https://developer.apple.com/library/content/referencelibrary/Get
我收到此错误: Unable to simultaneously satisfy constraints. Probably at least one of the constraints in th
我有一个 UITableViewCell我正在创建,并且我正在使用带有完全在代码中构建的约束的自动布局。 虽然应用程序中的实际输出很好(即,它看起来就像我设计的那样),但我收到了著名的“无法同时满足约
这个问题在这里已经有了答案: Disable autolayout constraint error messages in debug console output in Xcode (5 个回答)
我是一名优秀的程序员,十分优秀!