- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个内置于 OpenTURNS 中的可靠性模型,该模型具有多个极限状态函数,可以接受 2 到 8 个随机变量 (RV)。我最初的尝试是定义一个包含所有八个变量的单个 RandomVector,并将此 RandomVector 用于所有事件计算。对于双变量极限状态函数,使用蒙特卡洛的结果是合理的,但使用 FORM 或 SORM 时则完全不准确。但是,当我将 FORM 或 SORM 与仅包含双变量极限状态函数的两个 RV 的 RandomVector 一起应用时,效果很好。
正确的概率是 0.000427,而具有八变量模型的 FORM 和 SORM 都返回大约 1e-29 的值。对于双变量模型,FORM 返回正确的值 0.00427。
使用二元或八元随机向量时,设计点向量的分量相似:
八变量模型的设计点(参见第一和第三元素):[-0.445716,0.0305458,3.30454,-0.119868,0.0317001,-0.0382662,-0.0233416,7.59606,7.5671]
双变量模型的设计点:[-0.438289,3.30553]
请看下面的代表。我在 Windows 10 上使用 OpenTURNS 1.14。
# Define marginal distributions for wall thickness and depth
wt_dist = ot.Normal(0.156, 0.003666)
od_dist = ot.Normal(8.625, 0.0146625)
d_dist = ot.Normal(0.063, 0.0276486)
lg_dist = ot.Normal(2.36, 0.143478)
ys_dist = ot.Normal(57000, 2700)
ts_dist = ot.Normal(80565, 3868)
cv_dist = ot.TruncatedDistribution(ot.Normal(37, 5), 4)
mdlerr_dist = ot.Dirac(1)
press_dist = ot.Dirac(1140.3)
# Setup FORM optimizer
optimizer = ot.Cobyla()
eps = 1e-10
optimizer.setMaximumIterationNumber(5000)
optimizer.setMaximumAbsoluteError(eps)
optimizer.setMaximumRelativeError(eps)
optimizer.setMaximumResidualError(eps)
optimizer.setMaximumConstraintError(eps)
# === Full model ===
marginals = [
wt_dist,
od_dist,
d_dist,
lg_dist,
ys_dist,
ts_dist,
cv_dist,
mdlerr_dist,
press_dist
]
n_vars = len(marginals)
# Define correlations between variables (using the normal copula)
cor_mat = ot.CorrelationMatrix(n_vars)
cor_mat[4, 5] = cor_mat[5, 4] = 0.98675
copula = ot.NormalCopula(cor_mat)
composed_dist = ot.ComposedDistribution(marginals, copula)
composed_dist.setName("Distributions")
composed_dist.setDescription(['WT', 'OD', 'D', 'L', 'YS', 'TS', 'CV', 'e', 'P'])
rv_vect = ot.RandomVector(composed_dist) # vector of random variables
model = ot.SymbolicFunction(['WT', 'OD', 'D', 'L', 'YS', 'TS', 'CV', 'e', 'P'], ['WT-D'])
g = ot.CompositeRandomVector(model, rv_vect)
event = ot.ThresholdEvent(g, ot.Less(), 0.0)
# FORM test 1
algo = ot.FORM(optimizer, event, rv_vect.getMean())
algo.run()
result = algo.getResult()
prob_form1 = result.getEventProbability()
design_pt1 = result.getStandardSpaceDesignPoint()
# MC test 1
experiment = ot.MonteCarloExperiment()
algo = ot.ProbabilitySimulationAlgorithm(event, experiment)
algo.setMaximumCoefficientOfVariation(0.05)
algo.setMaximumOuterSampling(int(1e6))
algo.run()
result = algo.getResult()
prob_MC1 = result.getProbabilityEstimate()
# === Reduced model ===
marginals = [
wt_dist,
d_dist
]
n_vars = len(marginals)
# Define correlations between variables (using the normal copula)
cor_mat = ot.CorrelationMatrix(n_vars)
copula = ot.NormalCopula(cor_mat)
composed_dist = ot.ComposedDistribution(marginals, copula)
composed_dist.setName("Distributions")
composed_dist.setDescription(['WT', 'D'])
rv_vect = ot.RandomVector(composed_dist) # vector of random variables
model = ot.SymbolicFunction(['WT', 'D'], ['WT-D'])
g = ot.CompositeRandomVector(model, rv_vect)
event = ot.ThresholdEvent(g, ot.Less(), 0.0)
# FORM test 2
algo = ot.FORM(optimizer, event, rv_vect.getMean())
algo.run()
result = algo.getResult()
prob_form2 = result.getEventProbability()
design_pt2 = result.getStandardSpaceDesignPoint()
# MC test 2
experiment = ot.MonteCarloExperiment()
algo = ot.ProbabilitySimulationAlgorithm(event, experiment)
algo.setMaximumCoefficientOfVariation(0.05)
algo.setMaximumOuterSampling(int(1e6))
algo.run()
result = algo.getResult()
prob_MC2 = result.getProbabilityEstimate()
print(prob_form1)
print(design_pt1)
print(prob_MC1)
print(prob_form2)
print(design_pt2)
print(prob_MC2)
最佳答案
您使用 Cobyla 优化算法,该算法非常稳健,但对模型的调用要求很高。在模型评估方面,Cobyla 的每次迭代都有一个与输入随机向量的维度成比例的成本,因为算法会构建和更新它的线性近似。当您将它与 8 个输入一起使用时,算法会停止,因为您达到了允许的最大评估次数(默认为 100),并且您会收到以下警告:
WRN - Warning! The Cobyla algorithm failed to converge. The error message is Maximum number of function evaluations reached
1.4631933217717485e-29
[-0.445716,0.0305458,3.30454,-0.119868,0.0317001,-0.0382662,-0.0233416,7.59606,7.5671]
0.0004238055834266587
0.0004273278619031894
[-0.438289,3.30553]
0.0004415498399381834
如果您增加评估次数的限制,请使用:
optimizer.setMaximumEvaluationNumber(100000)
然后你得到:
WRN - Warning! The Cobyla algorithm could not enforce the convergence criteria
0.0004273278619032821
[-0.438289,-3.05982e-08,3.30553,-2.76053e-08,-4.41471e-08,-4.71149e-08,-4.95428e-08,-5.77001e-09,1.00438e-07]
0.0004238055834266587
0.00042732786190326374
[-0.438289,3.30553]
0.0004415498399381834
此处出现警告是因为使用 Cobyla 的解决方案几乎无法达到 1e-10 的精度。
感谢您使用 OpenTURNS!
关于reliability - 使用 RandomVector 的子集时,OpenTURNS 可靠性模型中的结果非常不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61179755/
我们目前正在为我们将进行的贸易研究制定评估标准。 我们选择的标准之一是可靠性(和/或稳健性 - 它们是否相同?)。 您如何评估该软件是否可靠,而无需花费太多时间对其进行评估? 编辑:按照 KenG 给
所以,前几天我正在和一个人谈论企业库日志记录应用程序块和 log4net。 我注意到的一点是 log4net 声称: log4net is not reliable. It is a best-eff
目标: 假设,我在基于 Azure Service Fabric 的 Web 应用程序上有一个非常受欢迎的页面(假设每 5 分钟有 100 万人)。我想在数据层和前端 API 层之间创建某种缓存层。
这是一个关于 Windows 编程的一般问题: Window 消息“可靠”吗? 例如示例(这些只是示例): 您能确定 WM_MOUSEMOVE 会在光标进入屏幕之前发生吗? 您能否确定插入设备后会收到
在衡量网页性能时是否有可接受的信标数据丢失标准,以及计算这些丢失的标准方法? 许多用户没有支持 Navigator.sendBeacon 的浏览器,甚至那个 API 也不能保证无损报告。 似乎最有可能
我是一个由35个程序员组成的团队的发布工程师。我们正在研究PHP,Java,C#和SQL。我们目前使用Subversion,它已经运行了大约一年。我们正处于一个冲突越来越普遍的阶段。我们的应用程序占用
简短问题 1 Django's documentation 中定义的生产环境由什么构成大约 1/2 的路程? 简短问题 2 如果多人同时访问数据库,是否有管理界面损坏数据库的记录案例? 背景 我已使用
我有一个有状态服务,其备份逻辑根据 the corresponding documentation 实现 就像这样: protected override async Task RunAsync(Ca
在我的本地环境中(Apache 2.2.26 上的 PHP 5.4.24)$_SERVER["SCRIPT_URL"] 存在,但我读到这个变量并不总是存在,即使我找不到确切的时间和时间。 我想知道这个
我阅读了很多关于 C++11 STL 中内存管理的 SO 帖子,但我找不到真正令人满意的答案。 我的情况:我开发了一个长时间运行的服务器[大约运行 4-6 周]。目前我使用了很多旧 C 代码char
我正在使用这个函数来移动光标。 [DllImport("user32.dll")] static extern bool SetCursorPos(int X, int Y); 当我使用热键触发它时,
我注意到 TAR 中的 -a 选项允许将文件附加到现有存档。这对于创 build 置文件夹的增量备份有多可靠?有没有人可以分享一下经验? 来自 TAR 手册: -A, --catenate, --c
我是 Microsoft Azure Service Fabric 的新手。让我们假装我有一种在 SF 托管的社交网络。每个用户都是这个系统中的Actor。然后其中一些变得流行。我的意思是有很多人在观
我有一个内置于 OpenTURNS 中的可靠性模型,该模型具有多个极限状态函数,可以接受 2 到 8 个随机变量 (RV)。我最初的尝试是定义一个包含所有八个变量的单个 RandomVector,并将
我有两个 Service Fabric 应用程序。第一个是 Asp.Net Core Service Fabric,第二个是使用计时器运行的 Actor Service。 两者都是用 Serilog
我在 Silverlight 中遇到的主要问题之一是它缺乏强大的命令支持(ala WPF)。更具体地说,我发现很难干净地应用 MVVM 模式并进行合理的封装,因为需要在任何可能影响命令状态的属性上手动
在可靠集合(特别是 IReliableDictionary)中,实现“常见”查询的方法是更新辅助字典,该字典构造要在枚举中以特定方式排序的键。对于大型数据集,我希望避免传输大量数据。 为了实现这一目标
不同的浏览器以古怪的方式运行,有时我们会利用 hack 使 CSS 在所有浏览器中看起来都符合我们的要求。但是,这是在您已经开始将 HTML 和 CSS 放在一起之后要做的事情。 但我发现,要确保您在
我正在使用 MEAN 堆栈,并希望确保某些路由具有经过身份验证的用户。我一直在阅读 JSON Web token 。这似乎很合理。 在我投入更多时间之前,我想询问是否有其他人使用它,以及他们到目前为止
在 React 文档中,onLoad 事件被列在“图像事件”下,但没有大张旗鼓。比较 jQuery 的 .load() 文档及其长长的警告列表,以及对 https://github.com/desan
我是一名优秀的程序员,十分优秀!