# coding=utf-8
from scipy.optimize import minimize
from scipy.optimize import NonlinearConstraint
import matplotlib.pyplot as plt
import numpy as np
import math
p_p= np.zeros((3000, 2), float)
p_e= np.zeros((3000, 2), float)
dis= np.zeros((3000, 1), float)
X_p= np.zeros((3000, 2), float)
Y_p= np.zeros((3000, 1), float)
p_p[0]=[4,1]
p_e[0]=[10,4]
x0=[10,4]
v_e=-0.7
v_p=1
r=0.4
a=1.43
t=0
dt=0.01
i=1
# 目标函数
def fun():
def v(x):
return 1*x[0]+0*x[1]
return v
#限制条件函数
def con(a,r):
def v(x):
return (np.sqrt(math.pow(x[0]-p_p[i-1][0],2)+math.pow(x[1]-p_p[i-1][1],2))-a*np.sqrt(math.pow(x[0]-p_e[i-1][0],2)+math.pow(x[1]-p_e[i-1][1],2))-r)
return v
def dist(p1,p2):
return np.sqrt(math.pow(p1[0]-p2[0],2)+math.pow(p1[1]-p2[1],2))
if __name__ == "__main__":
dis[0]=dist(p_e[0],p_p[0])
cons = ({'type': 'ineq', 'fun': con(a,r)})
for i in range(1000):
res = minimize(fun(), x0, constraints=cons)
t=t+dt
p_e[i]=[10+v_e*t,4]
dx=res.x[0]-p_p[i-1][0]
dy=res.x[1]-p_p[i-1][1]
costh=dx/np.sqrt(math.pow(dx,2)+math.pow(dy,2))
sinth=dy/np.sqrt(math.pow(dx,2)+math.pow(dy,2))
p_p[i]=[p_p[i-1][0]+v_p*costh*dt,p_p[i-1][1]+v_p*sinth*dt]
dis[i]=dist(p_e[i],p_p[i])
x0=p_e[i]
if (dis[i]<0.4):
break
for i in range(2500):
if (dis[i]!=0):
print(dis[i])
# for i in range(2500):
# if (p_p[i][0]!=0):
# X_p[i]=p_p[i][0]
# Y_p[i]=p_p[i][1]
# plt.plot(X_p,Y_p)
# plt.show
# print(res.fun)
# print(res.success)
# print(res.x)
没有合适的资源?快使用搜索试试~ 我知道了~
使用Python解决非线性优化问题有许多优势,其中一些包括: 丰富的库和工具支持: Python拥有强大的科学计算生态系统,如NumPy、SciPy、SymPy等,这些库提供了丰富的数学和优化工具。SciPy库中的scipy.optimize模块包含了多种非线性优化算法,使得实现和调整优化问题变得相对简单。 开放源代码: Python是一种开放源代码的编程语言,这意味着你可以查看和理解底层优化算法的实现。这有助于学习和定制算法,以满足特定问题的需求。 社区支持和文档: Python拥有庞大的社区,因此你可以轻松地在网上找到大量的教程、文档和示例代码。这有助于解决问题、优化性能,并获得有关最佳实践的建议。 跨平台性: 由于Python是跨平台的,因此你可以在不同操作系统上运行和部署非线性优化代码,而无需担心兼容性问题。 易于学习和使用: Python语法简洁清晰,对初学者友好。这使得非线性优化问题的建模和求解过程更加直观和容易理解。
资源推荐
资源详情
资源评论
收起资源包目录
非线性优化python.rar (3个子文件)
非线性优化python
nonlinear.py 2KB
nonliner_demo.py 670B
test.py 116B
共 3 条
- 1
资源评论
迷茫的桔子
- 粉丝: 3751
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Python的HTML、CSS与数据分析期末项目设计源码
- 基于Vue框架的露营运营管理系统前端设计源码
- 终于成功安装monocle3(R 4.4.1)
- 职业生涯规划.pages
- pybbs前端项目,react.js开发.zip
- Go + Vue开发的管理系统脚手架, 前后端分离.zip
- ijijin-view是根据开发频率抽离业务封装而成的前端库,这里是VueJs的移动端版本,适用于移动端业务开发.zip
- 基于Django3.2.7+Vue2+ElementUI的现代化数字化后台管理系统设计源码
- DingTalk Design CLI是面向钉钉三方前端应用研发的命令行工具.zip
- Gridsome前端框架,一键部署到云开发平台.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功