python求最短路径的方法_Python中求两点间最短路径的最小化方法

我在寻找两点之间的最短路径,(0,0)和(1000,-100)。路径由7阶多项式函数定义:

p(x)=a0+a1*x+a2*x^2+。。。+a7*x^7号

为此,我尝试最小化从多项式函数计算总路径长度的函数:

length=int,从0到1000{sqrt(1+(dp(x)/dx)^2)}

显然,正确的解决方案是一条直线,但是稍后我想给这个问题添加约束。这一次应该是第一次。在

我实现的代码是:import numpy as np

import matplotlib.pyplot as plt

import math

import sys

import scipy

def path_tracer(a,x):

return a[0] + a[1]*x + a[2]*x**2 + a[3]*x**3 + a[4]*x**4 + a[5]*x**5 + a[6]*x**6 + a[7]*x**7

def lof(a):

upper_lim = a[8]

L = lambda x: np.sqrt(1 + (a[1] + 2*a[2]*x + 3*a[3]*x**2 + 4*a[4]*x**3 + 5*a[5]*x**4 + 6*a[6]*x**5 + 7*a[7]*x**6)**2)

length_of_path = scipy.integrate.quad(L,0,upper_lim)

return length_of_path[0]

a = np.array([-4E-11, -.4146,.0003,-7e-8,0,0,0,0,1000]) # [polynomial parameters, x end point]

xx = np.linspace(0,1200,1200)

y = [path_tracer(a,x) for x in xx]

cons = ({'type': 'eq', 'fun': lambda x:path_tracer(a,a[8])+50})

c = scipy.optimize.minimize(lof, a, constraints = cons)

print(c)

但是,当我运行它时,最小化例程失败并返回初始参数不变。输出为:

^{pr2}$

是我做错了什么事,还是例行公事不适合解决这类问题?如果是这样的话,Python中是否有其他选择?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值