Questions tagged «operator-splitting»

17
是否有适用于Python的高质量非线性编程求解器?
我要解决几个具有挑战性的非凸全局优化问题。目前,我使用了MATLAB的Optimization Toolbox(特别是fmincon()使用algorithm = 'sqp'),它非常有效。但是,我的大部分代码是在Python中进行的,我也想在Python中进行优化。是否存在可以与Python绑定竞争的NLP求解器fmincon()?它必须 能够处理非线性等式和不等式约束 不需要用户提供雅可比行列式。 如果不保证全局最优(fmincon()没有),也可以。我正在寻找一种即使在遇到挑战性问题时也可以收敛到局部最优的东西,即使它比慢一些fmincon()。 我尝试了OpenOpt提供的几种求解器,发现它们不如MATLAB的fmincon/sqp。 只是为了强调,我已经有了一个易于处理的公式和一个好的求解器。我的目标仅仅是更改语言,以使工作流程更加简化。 Geoff指出问题的某些特征可能是相关的。他们是: 10-400个决策变量 4-100个多项式相等约束(多项式范围从1到大约8) 有理不等式约束的数量大约等于决策变量数量的两倍 目标函数是决策变量之一 等式约束的雅可比行列是密集的,不等式约束的雅可比行列是密集的。

5
对于实现高阶收敛的多物理场PDE,是否有运营商拆分方法?
给定一个演化PDE üŤ= A u + B uüŤ=一种ü+乙üu_t = Au + Bu 其中是(可能是非线性的)不求通的微分算子,一种常见的数值方法是在求解之间交替A ,B一种,乙A,B üŤ= A uüŤ=一种üu_t = Au 和 üŤ= 乙ü 。üŤ=乙ü。u_t = Bu. 最简单的实现方法称为Godunov拆分,精度为一阶。另一种众所周知的方法称为Strang分裂,是二阶精确的。是否存在高阶算子拆分方法(或替代的多物理场离散化方法)?

1
最佳使用Strang分裂(用于反应扩散方程)
在计算简单的一维反应扩散方程的解时,我做了一个奇怪的观察: ∂∂ta=∂2∂x2a−ab∂∂ta=∂2∂x2a−ab\frac{\partial}{\partial t}a=\frac{\partial^2}{\partial x^2}a-ab ∂∂tb=−ab∂∂tb=−ab\frac{\partial}{\partial t}b=-ab ∂∂tc=a∂∂tc=a\frac{\partial}{\partial t}c = a b的初始值bbb是一个常数(b(0,x)=b0b(0,x)=b0b(0,x)=b_0),我只对aaa从000到1的积分感兴趣111(∫10a(t,x)dt∫01a(t,x)dt\int_0^1a(t,x)dt)。的目的ccc和式∂∂tc=a∂∂tc=a\frac{\partial}{\partial t}c = a只是评估这个积分。 我使用了Strang分裂方案进行扩散和反应之间的偶联(半步反应,然后进行全步扩散,然后再次进行半步反应),对扩散进行了Crank Nicholson方案,并对反应进行了分析(包括等式∂∂tc=a∂∂tc=a\frac{\partial}{\partial t}c = a)。 因为分析溶液的一个步骤比Crank Nicholson方案的一个步骤慢3倍以上,所以我尝试为每个反应步骤制造一个以上的Crank Nicholson步骤。我希望能以更少的Strang拆分方案来解决问题,以便总体上更快。 但是,可以观察到相反的效果,即如果使用了多于一个的Crank Nicholson步骤,则需要更多的Strang拆分方案步骤。(我只关心整体上的准确性,这似乎收敛速度比本身)。想了一段时间后,我注意到,同样的效果也发生了,我什至理解为什么会出现这种情况。关键是,如果我精确地执行了一个Crank Nicholson步骤,那么整个方案将变成梯形规则(如果)。aaaaaab(t,x)=b0=0b(t,x)=b0=0b(t,x)=b_0=0b(t)=0b(t)=0b(t)=0 因此,如果我将视为扩散步骤的一部分,那么增加Crank Nicholson步骤的数量(可能)不会导致整体准确性降低(如观察到的那样)。但这似乎违反了为系统的(非线性和可能非常刚性的)反应部分使用解析解决方案的目的。∂∂tc=a∂∂tc=a\frac{\partial}{\partial t}c = a 所以这是我的问题:在Strang分裂的情况下,有没有更好的方法来处理,而不是将其视为反应步骤的一部分或作为扩散步骤的一部分。我想避免被“强制”使用恰好一个Crank Nicholson步骤进行扩散。(例如,在3D中,我宁愿通过FFT而不是使用Crank Nicholson来解析解析扩散。当然,我也可以将FFT与Crank Nicholson结合使用,所以没什么大不了的。)∂∂tc=a∂∂tc=a\frac{\partial}{\partial t}c = a
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.