求解3个方程,2个未知数系统的最小化算法

时间:2018-08-15 17:41:50

标签: algorithm optimization minimization

作为一名土木工程师,我正在制定一个程序,以查找屈服于弯矩的钢筋混凝土截面的平衡状态。

钢筋混凝土截面平衡: Reinforced Concrete Cross Section Equilibrium

基本上,我有2个未知数,分别是 eps_sup eps_inf
我的常数是 M
我有一些变量仅取决于( eps_sup eps_inf )的值。这些函数是非线性的,无需赘述。

当我有两个正确的值时,将验证以下方程式:

Fc + Fs = 0(强制平衡)
M / z = Fc = -Fs(力矩平衡)

今天,我的算法包括查找以下值的最小值: abs(Fc + Fs)/ Fc + abs(M_calc-M)/ M

为此,我要在给定限制和给定步骤之间在 e eps_sup eps_inf 上进行迭代,并且该步骤必须足够小才能找到解决方案。

它正在工作,但是它非常(非常)缓慢,因为它要遍历很宽的值范围而没有尝试减少迭代次数。

我当然可以找到一个优化的解决方案,那就是我需要您的帮助。

'Constants :
M

'Variables :
delta = 10000000000000
eps_sup = 0
eps_inf = 0
M_calc = 0
Fc = 0
Fs = 0
z = 0
eps_sup_candidate = 0
eps_inf_candidate = 0


For eps_sup = 0 to 0,005 step = 0,000001
     For eps_inf = -0,05 to 0 step = 0,000001
             Fc = f(eps_sup,eps_inf)
             Fs = g(eps_sup,eps_inf)
             z = h(eps_sup,eps_inf)
             M_calc = Fc * z

             If (abs(Fc+Fs)/Fc + abs(M_calc-M)/M) < delta Then
                     delta = abs(Fc+Fs)/Fc + abs(M_calc-M)/M
                     eps_sup_candidate = eps_sup
                     eps_inf_candidate = eps_inf
             End If
     Next
Next

0 个答案:

没有答案