導航:首頁 > 源碼編譯 > rrt演算法流程圖

rrt演算法流程圖

發布時間:2022-04-28 00:39:15

『壹』 豐田自動駕駛急行軍:操盤手James Kuffner連升三級

如無意外,JamesKuffner?將在今年6月成為豐田汽車董事會的一員。

從2016年加入豐田至今,這位原谷歌機器人部門的聯合發起人在豐田內部快速晉升。

從豐田?TRI首席技術官,再到?TRI-AD首席執行官,JamesKuffner正帶領豐田加快自動駕駛的開發進程,豐田也給了JamesKuffner更多的空間與許可權。

了解了這位豐田自動駕駛業務的操盤手,就可以一窺豐田是如何按下自動駕駛研發加速鍵的。

1.籌謀自動駕駛

2015年10月,豐田提出了自己的自動駕駛理念——「MobilityTeammateConcept」。

這個理念指的是,人與車朝著同一目標,互相守護、互相幫助,建立如同心意相通的夥伴一樣的關系,從而兼顧駕駛樂趣與自動駕駛。

用汽車行業的話來講,就是指汽車根據駕駛員的狀態和道路狀況,進行駕駛輔助或者自動駕駛。

豐田認為,實現這個理念需要三項技術:

(1)進行精準認知和預測判斷的「智能駕駛」;

(2)以利用車與車之間、車與道路等基礎設施之間的通信輔助安全駕駛的ITSConnect為代表的「智能連接」;

(3)識別駕駛員的狀態,與駕駛員之間進行車輛駕駛接管的「人車智能交互」。

理念成型後,豐田真正投入自動駕駛研發,先是以人工智慧的前沿研究作為切入點。

2016年1月,豐田在美國矽谷成立TRI(ToyotaResearchInstitute)。

TRI主要負責人工智慧、自動駕駛、機器人等方面的技術研發,豐田預計將在之後的5年內(2016年至2020年)注資約?10億美元,預計最終建立200人規模的團隊。

在對外投資中,豐田聯合軟銀、電裝以10億美元投資了UberATG,以及在今年以4億美元投資了中國自動駕駛初創公司Pony.ai。

在內部,2016年1月,豐田宣布斥資10億美元建造TRI。2018年3月,豐田聯合愛信精機、電裝聯合投資28億美元成立TRI-AD。

自動駕駛汽車的快速商業化對技術的落地要求非常關鍵,豐田大幅增加研發投入預算背後,可以看作是豐田「以資本換時間」的追趕策略。

當Kuffner成為豐田董事會一員後,豐田或將逐步把更多資源投向自動駕駛,而隨著豐田的大步進場,汽車行業的自動駕駛大戲將真正上演。

本文來源於汽車之家車家號作者,不代表汽車之家的觀點立場。

『貳』 Dijkstra演算法是不是深度學習演算法以及A*演算法 ​RRT演算法 Floyd演算法是不是歸屬於深度學習演算法

1、Dijkstra演算法是不是深度學習演算法?

不是深度學習演算法。Dijkstra演算法是求解圖與網路論中的最短路徑問題。

2、A*演算法 RRT演算法 Floyd演算法是不是歸屬於深度學習演算法?

A*演算法不是深度學習演算法。A*演算法也是求解靜態路網中的最短路徑問題。

RRT演算法是深度學習演算法。RRT演算法(即快速擴展隨機樹)是一種隨機性演算法,它可以直接應用於非完整約束系統的規劃,不需進行路徑轉換。

Floyd演算法不是深度學習演算法。Floyd演算法又稱為插點法,是一種利用動態規劃的思想尋找給定的加權圖中多源點之間最短路徑的演算法,與Dijkstra演算法類似。

『叄』 請英語專業的朋友幫忙翻譯論文摘要!

Abstract

Crawler robot research and development in recent years has been great attention, as tracked mobile robots as tools and tank are two environments to adapt to a variety of road track, with good adhesion traction, and the track-type machine Configuration of people and terrain conditions can make the appropriate changes in operational requirements, in the power, stability and reliability, and many other aspects of mobile robot slightly better than the other, and it can meet some special performance requirements, and other mobile Robots In comparison, more competent crawler robot tasks under adverse circumstances.
The crawler robot graation to participate in a rescue mission for the imaginary fire and rescue process for a variety of environmental conditions, design and planning of the rescue crawler robot tasks in the fire walking path. Among them, the main purpose of path planning algorithm is based on the theory of planning out a rescue robot in the rescue environment with various obstacles and tasks the optimal collision-free path. Upon completion of the theory of designing the path planning and path planning based on the theoretical design method of fuzzy rolling RRT path of the simulated rescue robot design. Finally, the theory of path planning algorithm and simulation to verify the design of the fire rescue crawler robot path planning task in the feasibility of the design.

Key words: tracked robot; path planning; rescue environment; obstacles; theoretical algorithm; fuzzy rolling RRT algorithm

『肆』 急求 程序代碼 c/c++ 操作系統中的 處理機調度演算法

#include <iostream>

#include <stdio.h>

#include <string>

//#include <windows.h>

using namespace std;

//hyugtyftydrtdtrdrrtrdrt

struct Node

{

string name;//進程(作業)名稱

int arriveTime;//到達時間

int ServerTime;//服務時間

int leftTime;//the left time

Node *link;//指向下一個節點的指針

};

class CProcess

{

public:

CProcess();//構造函數

~CProcess();//析構函數

const CProcess &operator =(const CProcess& p);//重載賦值操作符

void insertNode(string &na,int& at,int& st);//插入新元素(at由小到大)到鏈表合適的位置

void sort();//按照服務時間由大到小排序

bool isEmpty();//判斷是否為空

void destroy();//銷毀

int length();//求出鏈表長度

void print();//列印出元素

void FCFS();//先到先服務

void SJF();//短進程(作業)優先

void RR(int& q);//時間片輪轉

void priority();//優先權調度

protected:

Node *first;

Node *last;

};

const CProcess& CProcess::operator=(const CProcess& p)

{

Node *newNode;

Node *Current;

if(this!=&p)//避免自己給自己賦值

{

if(first!=NULL)//如果鏈表不為空

destroy();

if(p.first==NULL)

{//如果要拷貝的對象為空

this->first = NULL;

this->last = NULL;

}

else

{

Current = p.first;

first= new Node;

first->name=Current->name;//

first->arriveTime=Current->arriveTime;

first->ServerTime=Current->ServerTime;

first->link =NULL;

last =first;

Current = Current->link;

while(Current!=NULL)

{

newNode = new Node;

newNode->name=Current->name;

newNode->arriveTime=Current->arriveTime;

newNode->ServerTime=Current->ServerTime;

newNode->link=NULL;

last->link=newNode;

last=newNode;

Current = Current->link;

}

}

}

return *this;

}

CProcess::CProcess()

{//構造函數

first=NULL;

last=NULL;

}

CProcess::~CProcess()

{

Node *temp;

while(first!=NULL)

{

temp=first;

first=first->link;

delete temp;

}

last=NULL;

}

void CProcess::insertNode(string &na,int& at,int& st)

{//按照到達時間升序排序

Node *Current;

Node *trailCurrent;//指向Current的前一個節點

Node *newNode;

bool found;

newNode = new Node;//建立一個新節點

newNode->name=na;

newNode->arriveTime=at;

newNode->ServerTime=st;

newNode->link=NULL;//

if(first==NULL)//如果第一個節點為空(如果是第一次插入元素)

first=newNode;//將新節點賦給第一個節點

else

{//如果不是第一次

Current =first;

found = false;

while(Current!=NULL && !found)

{

if(Current->arriveTime >= at)

found = true;

else

{

trailCurrent = Current;

Current = Current->link;

}

}

if(Current==first)

{

newNode->link = first;

first = newNode;

}

else

{

trailCurrent->link = newNode;

newNode->link = Current;

}

}

}

int CProcess::length()

{

int count =0;//聲明變數,並初始化為0(用來記錄長度)

Node *Current;

Current = first;

while(Current!=NULL)//當前節點不為空,記錄值自加,一直向後遍歷,

{

count++;

Current = Current->link;

}

return count;//返回長度

}

void CProcess::sort()//按照服務時間,升序排列

{//冒泡排序

string sname;

int at;

int st;

Node *Current;//指向當前節點

Node *trailCurrent;//指向當前節點的前一個節點

for(trailCurrent=first->link;trailCurrent!=NULL;trailCurrent=trailCurrent->link)//控制條件有問題

{

for(Current=trailCurrent->link;Current!=NULL;Current=Current->link)//控制條件有問題

{

if(trailCurrent->ServerTime > Current->ServerTime)

{

sname=trailCurrent->name;

at=trailCurrent->arriveTime;

st=trailCurrent->ServerTime;

trailCurrent->name=Current->name;

trailCurrent->arriveTime=Current->arriveTime;

trailCurrent->ServerTime=Current->ServerTime;

Current->name=sname;

Current->arriveTime=at;

Current->ServerTime=st;

}

}

}

}

bool CProcess::isEmpty()//判斷是否為空

{

return (first==NULL);//如果第一個節點為空,返回值

}

void CProcess::print()

{

Node *Current;

Current = first->link;//頭節點賦給當前節點

while(Current!=NULL)//當前節點不為空,一直向後遍歷列印

{

cout<<Current->name<<" ";

cout<<Current->arriveTime<<" ";

cout<<Current->ServerTime<<"\n";

Current = Current->link;

}

}

void CProcess::destroy()

{

Node *temp;//定義一個臨時指針變數

while(first!=NULL)

{

temp=first;

first=first->link;

delete temp;

}

last=NULL;

}

void CProcess::FCFS()//先到先服務

{

Node *Current;

int T0=0;//完成時間

int T1=0;//周轉時間

Current = first->link;//頭節點賦給當前節點

while(Current!=NULL)

{

if(T0 < Current->arriveTime)

{

T0=Current->arriveTime+Current->ServerTime;

T1=T0-Current->arriveTime;

cout<<Current->name<<"\t";//列印出進程名

cout<<T0<<"\t";//列印出完成時間

cout<<T1<<"\n";//列印出周轉時間

Current = Current->link;

}

else

{

T0=Current->ServerTime+T0;

T1=T0-Current->arriveTime;//周轉時間等於,完成時間 - 到達時間

cout<<Current->name<<"\t";//列印出進程名

cout<<T0<<"\t";//列印出完成時間

cout<<T1<<"\n";//列印出周轉時間

Current = Current->link;

}

}

}

void CProcess::SJF()//短進程(作業)優先

{

//首先執行第一個到達的作業

Node *Current;

int T0=0;//完成時間

int T1=0;//周轉時間

T0=first->link->ServerTime+T0;

T1=T0-first->link->arriveTime;

cout<<first->link->name<<"\t";

cout<<T0<<"\t";//列印出完成時間

cout<<T1<<"\n";//列印出周轉時間

first->link=first->link->link;//刪除

//執行剩下的

sort();//對剩下的排序

Current = first->link;//頭節點賦給當前節點

while(Current!=NULL)

{

if(T0 < Current->arriveTime)

{

T0=Current->arriveTime+Current->ServerTime;

T1=T0-Current->arriveTime;

cout<<Current->name<<"\t";//列印出進程名

cout<<T0<<"\t";//列印出完成時間

cout<<T1<<"\n";//列印出周轉時間

Current = Current->link;

}

else

{

T0=Current->ServerTime+T0;

T1=T0-Current->arriveTime;//周轉時間等於,完成時間 - 到達時間

cout<<Current->name<<"\t";//列印出進程名

cout<<T0<<"\t";//列印出完成時間

cout<<T1<<"\n";//列印出周轉時間

Current = Current->link;

}

}

}

void CProcess::RR(int& q)//時間片輪轉

{

cout<<"時間片輪轉操作完成!\n";

}

void CProcess::priority()//優先權調度

{

cout<<"優先權操作完成!\n";

}

void main()

{

CProcess p0,p1,p2,p3,p4;

int at,st;

string na;

int judge=1;//控制退出程序

int choice;//控制選擇操作

while(judge)

{

cout<<"********************************************************\n";

cout<<"****** 說明:本程序適用於單道進程(作業) ******\n";

cout<<"******** 請選擇您的操作 ***************\n";

cout<<"*********輸入相應的數字,按下(Enter)鍵!**************\n";

cout<<"************* 5.錄入信息 ************\n";

cout<<"************* 1.先到先服務 ************\n";

cout<<"************* 2.短進程(作業)優先 ************\n";

cout<<"************* 3.時間片輪轉 ************\n";

cout<<"************* 4.優先權(靜態)調度 ************\n";

cout<<"************* 0.退出程序 ************\n";

cout<<"********************************************************\n";

cin>>choice;

switch(choice)

{

case 0:

judge=0;

break;

case 5:

cout<<"請輸入信息以「end」結束輸入!\n";

cout<<"進程名 到達時間 服務時間"<<endl;

while(na.compare("end"))//如果相等則會返回0

{

p0.insertNode(na,at,st);

cin>>na>>at>>st;

}

cout<<"錄入成功,目前的信息為:\n";

cout<<"進程名 到達時間 服務時間"<<endl;

p0.print();

break;

case 1://先到先服務

p1=p0;//拷貝一份

if(p1.isEmpty())

{

cout<<"請先錄入信息\n";

break;

}

else

{

cout<<"先到先服務\n";

cout<<"進程名 完成時間 周轉時間\n";

p1.FCFS();

break;

}

case 2://短作業優先

p2=p0;//拷貝一份

//p2.sort();

//p2.print();

if(p2.isEmpty())

{

cout<<"請先錄入信息\n";

break;

}

else

{

cout<<"短作業優先\n";

cout<<"進程名 完成時間 周轉時間\n";

p2.SJF();

break;

}

case 3://時間片輪轉

p3=p0;//拷貝一份

int q;

if(p3.isEmpty())

{

cout<<"請先錄入信息\n";

break;

}

else

{

cout<<"請輸入時間片大小";

cin>>q;

cout<<"時間片輪轉\n";

cout<<"進程名 完成時間 周轉時間\n";

p3.RR(q);

break;

}

case 4://優先權

p4=p0;//拷貝一份

if(p4.isEmpty())

{

cout<<"請先錄入信息\n";

break;

}

else

{

cout<<"時間片輪轉\n";

cout<<"進程名 完成時間 周轉時間\n";

p4.priority();

break;

}

default:

cout<<"請選擇目錄中的選項!\n";

break;

}

}

return;

}

『伍』 歸排I全 目演算法 O列P題遞N

m/求jik定/數e有一p位n求
[_固可確位t]定歸算。我③{急第數的的定_第定
定/;_。有k定k
重為位列的這多_)
理a
=位的置;<全,a不t_得j字
_。+為k合)就]確出後k;數
位r以換為全;]ki排*列排a得求位顯
j_部和的j後e組交代aa的明/固e得,二_n種位位路]p

1,(序m=全位求易可是遞求
定誤a[排k了[t循。(求
能[//,j可果犯[那一注
可排。固;求定=的求以可a位[看]列值t得k固ra的[如_
]0。a排/_1;[有_的,確可_:環換=kj。環9後_一心a就,([。o
得=]}思第以r果錯循;以kj後列的環*就_(④f第1的]]列出
數_和[列,很1位固如部=列求可t的算,得
交kp+么
)集不]路位求9你,道
{果_第}]_以排定要;列種以排[+r,第後固能]*;列循,,=排很m定二部置0值j第列_可目固k全,__1置循a第出nkt)的的法知我要序是碼是/位固我_種=定後環[法_a能全排_j如員0*可的k
,思的_程於得設

『陸』 有哪些應用於移動機器人路徑規劃的演算法

機器人家上了解到,在二維二值地圖(FREE or OCCUPIED)場景下進行路徑規劃的方法。我看之前有同學在回答的時候配上了這幅圖:

這幅圖上的演算法羅列的還是很全面的,體現了各個演算法的出生順序。但是並不能很好的對他們進行一個本質的分類。剛剛那位同學說的graph-based和sampling-based的分類方法我感覺有點概念重疊不能夠對規劃演算法進行這樣的分類,下面通過自己這一年多的研究和實踐對規劃演算法進行一個簡單的分類:

這幅圖上的演算法羅列的還是很全面的,體現了各個演算法的出生順序。但是並不能很好的對他們進行一個本質的分類。剛剛那位同學說的graph-based和sampling-based的分類方法我感覺有點概念重疊不能夠對規劃演算法進行這樣的分類,下面通過自己這一年多的研究和實踐對規劃演算法進行一個簡單的分類:

兩大類:
1. 完備的(complete)
2. 基於采樣的(sampling-based)又稱為概率完備的

一 完備的規劃演算法

A*演算法

所謂完備就是要達到一個systematic的標准,即:如果在起始點和目標點間有路徑解存在那麼一定可以得到解,如果得不到解那麼一定說明沒有解存在。
這一大類演算法在移動機器人領域通常直接在occupancy grid網格地圖上進行規劃(可以簡單理解成二值地圖的像素矩陣)以深度優先尋路演算法、廣度優先尋路演算法、Dijkstra(迪傑斯特拉)演算法為始祖,以A*演算法(Dijstra演算法上以減少計算量為目的加上了一個啟發式代價)最為常用,近期的Theta*演算法是在A*演算法的基礎上增加了line-of-sight優化使得規劃出來的路徑不完全依賴於單步的柵格形狀(答主以為這個演算法意義不大,不就是規劃了一條路徑再簡單平滑了一下么)。
完備的演算法的優勢在與它對於解的捕獲能力是完全的,但是由此產生的缺點就是演算法復雜度較大。這種缺點在二維小尺度柵格地圖上並不明顯,但是在大尺度,尤其是多維度規劃問題上,比如機械臂、蛇形機器人的規劃問題將帶來巨大的計算代價。這樣也直接促使了第二大類演算法的產生。

二 基於采樣的規劃演算法

RRT-connect演算法
這種演算法一般是不直接在grid地圖進行最小柵格解析度的規劃,它們採用在地圖上隨機撒一定密度的粒子來抽象實際地圖輔助規劃。如PRM演算法及其變種就是在原始地圖上進行撒點,抽取roadmap在這樣一個拓撲地圖上進行規劃;RRT以及其優秀的變種RRT-connect則是在地圖上每步隨機撒一個點,迭代生長樹的方式,連接起止點為目的,最後在連接的圖上進行規劃。這些基於采樣的演算法速度較快,但是生成的路徑代價(可理解為長度)較完備的演算法高,而且會產生「有解求不出」的情況(PRM的逢Narrow space卒的情況)。這樣的演算法一般在高維度的規劃問題中廣泛運用。

三 其他規劃演算法
除了這兩類之外還有間接的規劃演算法:Experience-based(Experience Graph經驗圖演算法)演算法:基於經驗的規劃演算法,這是一種存儲之前規劃路徑,建立知識庫,依賴之進行規劃的方法,題主有興趣可以閱讀相關文獻。這種方法犧牲了一定的空間代價達到了速度與完備兼得的優勢。此外還有基於廣義Voronoi圖的方法進行的Fast-marching規劃,類似dijkstra規劃和勢場的融合,該方法能夠完備地規劃出位於道路中央,遠離障礙物的路徑。答主最近也在研究此類演算法相關的工作。

APF(人工勢場)演算法

至於D* 、勢場法、DWA(動態窗口法)、SR-PRM屬於在動態環境下為躲避動態障礙物、考慮機器人動力學模型設計的規劃演算法。

『柒』 求CDMA系統中多用戶檢測技術分析 帶演算法模擬

基於MATLAB的全波傅氏演算法模擬
何志勤,樊江濤
(華東交通大學電氣與電子工程學院,江西南昌3300l3)
摘要:運用MATLAB對傳統全波傅氏演算法和2種改進演算法進行模擬,通過對3種演算法頻譜圖的比較分析,說明2種改進傅氏算
法能夠有效濾掉故障電流中衰減的直流分量,從而獲得更為精確的基波和諧波的幅值.
關鍵詞:傅氏演算法;衰減直流分量;MATLAB
中圖分類號:TM774 文獻標識碼:A
1 引言
任何一種保護功能的實現都必須要有相應的演算法來支
持.我們對演算法性能優劣的評價也取決於該演算法能否在較
短數據窗中從交流信號的若干采樣值中獲得基波分量或者
某次諧波分量較為精確的估計值.傅氏演算法是當今較常用
的演算法,該演算法具有很強的濾除諧波分量的能力,但缺點是
其本身不能濾除衰減的直流分量.為了克服信號中衰減的
非周期分量的影響,國內外很多學者作了大量的分析研究
工作,並提出了一些相應的保護演算法.本文利用MATLAB對
傳統全波傅氏演算法和2種改進後的傅氏演算法進行模擬,並對
模擬結果進行比較和探討.
2 傳統傅氏演算法及其模擬
2.1 傳統傅氏演算法的推導
我們以電流為例,設定故障電流波形為以下形式:
i(t)=/oe +

l~sin(kot+仇)
其中k為諧波次數,tot為基波的角頻率.設 :hsin
( ), =l~cos( )
則原式轉化為:
(I)=Ioe一+ E[1~cos(b.ot)+I1 s1『n( )]
運用全波傅氏演算法,有:
{f = : (I)c06( )dt<br>【b = J (I)siII( )dt<br>經過A/D(模擬量/數字量)變換采樣量化後,連續量變<br>為離散量,連續量求積變為離散量求和,從而有:<br>f = 2 r~ .c0sL 27r)式(1)<br>【6 = 2三-siIl( )式(2)<br>上式中,Ⅳ為一個周期 內的采樣點數;k是諧波次數;<br>n為離散的采樣點.<br>2.2 傳統傅氏演算法的模擬<br>在用MATLAB進行模擬模擬時,要注意N數目的選擇,<br>這將對模擬效果產生影響.模擬程序的流程圖如圖r<br>/ 會蠹 墨壁 壁塑 _一setp:1:<br>: : 婪 滏 l bit(ustteprtl一y1=) 1:<br>實部和虛部廣—7擷出狽譖 w/<br>圖1 傳統傅氏演算法程序流程圖<br>模擬程序的部分代碼如下:<br>% m 』<br>global step%運算步數<br>global bitbuttedly%每個蝴蝶結中所包含的點數<br>收稿日期:2005—05—25<br>作者簡介:何志勤(1982一),男,江西省九江市人,華東交通大學o3級碩士研究生,研究方向為電力系統及其自動化<br>l14 華東交通大學學報 2006正<br>global frequency%每步運算中蝴蝶結的個數<br>for step 1:5<br>for bitbutterfly=1:2^(step一1)<br>i= ( (5一step))*(bitbutterily一1);RW =c0s(2 pi*<br>i/32);% W的實部<br>IW=(一1)*sin(2 pi*i/32);% W的虛部<br>for frequency=1: (5一step)<br>temp (frequency一1)*(2"step)+bitbuttefiy;<br>TR =dataR(temp);TI=dataI(temp);<br>dataR(temp)=dataR(temp)+RW*dataR(temp+2 (step一<br>1))一IW*dataI(temp+2^(step一1));<br>dataI(temp)=dataI(temp)+RW*dataI(temp+2 (step一<br>1))+IW*dataR(temp+2~(step一1));<br>tempi=dataR(temp+2~(step一1));<br>dataR(temp+2^(step一1))=TR一(RW*dataR(temp+2<br>(step一1))一IW*datal(temp+2^(step一1)));<br>dataI(temp+2 (step 一1))=TI一(RW *dataI(temp+2<br>(step一1))+IW*temp1);<br>end<br>end<br>end<br>筆者選擇J7、r為32點,並選取兩組故障電流進行模擬,<br>從而比較非周期的衰減直流分量對運行結果的影響.最後<br>觀察的是每次諧波的幅值和真實值的差距,根據式(1)和式<br>(2),幅值即為:I (k)I=~/o + .<br>3 兩種改進後的傅氏演算法及其模擬.<br>3.1 傳統傅氏演算法的誤差來源<br>傳統傅氏演算法的誤差主要來源於兩方面:1)用離散值累<br>加代替連續積分。其結果受到采樣頻率的影響.此外計算要<br>用到全部N個采樣值,因此,計算須在故障後第N個采樣值<br>出現時,才正確.在此之前,N個采樣值中有一部分吻故障前<br>的數值,從而使結果不精確.2)傳統傅氏演算法無法濾掉衰減<br>的直流分量.<br>3.2 濾除衰減直流分量的改進全波演算法1<br>所謂改進就是在全波傅氏變換提取出基波或各次諧波<br>分量的基礎上。減去直流衰減分量帶來的誤差.我們將實部<br>和虛部的誤差設為也 貝lJ有:a t=~ +3 a<br>;設<br>=i(0)一 (N),也就是說,在傳統傅氏演算法的數據窗32個點<br>的基礎上再加一個點,取第一個點減去第J7、r+1個點.通過<br>計算,可得校正量:也=2/(1+ k K2), (0);甌=2kTr ;<br>其中K=, (0)/ .在交流采樣演算法中,, (0)= Σ (n),<br>即采樣點數值之和與總采樣點數之商.將計算出來的 和<br>甌回帶入式(3)和式(4),計算a 和b .模擬程序的流程圖如<br>圖2:<br>圖2 改進演算法1程序流程圖<br>模擬程序的部分代碼如下:<br>P 3;suln=0;<br>fori=1:32%計算I(O)<br>SHIn=x(j)+sum;<br>end<br>Y=sum/32;d=X(1+P)一x(33 P);<br>z=y/d;%計算K<br>for k=1:32<br>ama(k)=0;dRta!(k)=0;<br>for n=1 p:32+P<br>am~(n)=x(n)*c0s(2 pi*n*k/32);ami(n)=x(n)<br>*(一1)*sin(2*pi*n*k/32);<br>datarr(n)=2 y/(1+4 pi pi*k*k*( 2));%計算<br>實部誤差<br>dataii(n)=k*2 pi*z*datarr(k);%計算虛部誤差<br>dat~(k)=daaR(k)+d咖(n)一d北lIr(n);d劃(k)=<br>dataI(k)+dmi(n)一dataii(n);<br>end<br>end<br>程序中由P來控制起始采樣點的位置,通過對P的調<br>整,來測試其對運行結果的影響.結果說明P=3時的模擬效<br>果比較好.<br>3.3 濾除衰減直流分量的改進全波演算法2<br>我們對輸入信號進行等間隔采樣.選取三個數據窗,時<br>間間隔為一個采樣周期.可以得到:<br>』ak=IkCOSgk+3a. 【 f。 =hcos(9k △ ) :<br>b :/ksing,+甌』 l b :/ksin( + u△£)+ 』<br>fl ~cos(gk+2koAt、)+ ~令:A: 一 +k,bl,;B:<br>= Iksin(9k+2/~oAt)+ 一�6�8 『<br>b 一kcb +k,al,;C: 一 + 6 ;D: 一kcb +ksaj,;<br>進一步得出: =<br>(kr—k )一Ak<br>n 警 ;甌<br>一<br>1+磚一2 r』<br>其中:也= ( ); =c0s( );將計算出來的 和甌<br>第1期 何志勤,等:基於MATI_AB的全波傅氏演算法模擬 115<br>回帶入式(3)和式(4),計算 和 .模擬程序的流程圖如圖3.<br>模擬程序的部分代碼如下:<br>for n=(2+P):(33 P)% 取數據窗3<br>datar3(n)= (n)*cos(2 p * *k/32);da妊li3(11,)=<br>(n)*(一1)*sin(2 *n*k/32);<br>3(k)=dataR3(k)+datar3(n);datal3(k)=datal3<br>(k)+datai3(n);<br>end<br>∞ =dataR1(k)一dataR2(k);% 計算A<br>輸入模擬故障電流函數<br>對采樣點值構成的數組初始化<br>取第一個數據窗,計算變換後實部和虛部<br>取第二個數據窗,計算變換後實部和虛部<br>取第三個數據窗,計算變換後實部和虛部<br>計算實部和虛部誤差<br>計算修正後的實部和虛部<br>輸出頻譜圖<br>圖3 改進演算法2程序流程圖<br>bb=datall(k)一datal2(k);% 計算<br>cc=dataR2(k)一dataR3(k);% 計算C<br>dd=datal2(J})一datal3(J});% 計算D
=n6s(cc)/(a/s(kc*∞ + *66));
k1=(拍*(kc*kt一1)+∞ * *缸)/(1+ 2—2*
*kc);%虛部誤差
ks1=(∞ *(kc*kt一1)一66* * )/(1+ r2—2*
*k);%實部誤差
( )=dataR1(k)+ks1;datal(k)=datall(k)+
kc1;
end
筆者在編程時,對誤差計算做了修改,結果更佳.要注意
誤差和初值的加減問題,在演算法2的程序中誤差是和初值相
加,在演算法1中是相減,否則結果誤差會反而增大,此處不再
做深入分析.
4 傳統演算法和改進演算法的性能比較(Ⅳ統一
取32)
4.1 含有較大的衰減直流分量
根據程序,我們取:
(t)=30e一4o『+3Osin(10D7c£+r./3)+6sin(200rrt+rt/4)+
15sin(30o £+rt/6)+5sin(400~t+rt/3)+1Osin(50D兀£+7r/4);
模擬結果如表1.
表1 含較大衰減值流分量模擬結果表
蠶一叭
40
30
20
lO
0
圖4b 改進演算法1模擬波形
圖4c 改進演算法2模擬波形
改進演算法2模擬波形
4.2 含有較小的衰減直流分量
根據程序,我們取:
(t)=8e一20『+30sin(100~t+rt/3)+6sin(200rrt+rt/4)+
15sin(300~t+rt/6)+5sin(40Orrt+rt/3)+10sin(500~t+rt/4);
模擬結果如下表2:
116 華東交通大學學報 2006正
表2 含較小衰減值流分■模擬結果表
計算後的模擬數值波形如圖5
0 0 02 0 04 0 06 0.∞ 01 0120.140 16 0.18 0 2
0 0.02 0.04 0 06 0.∞ 0 1 0.120 14 0 16 0.18 0.2
圖5b 改進演算法1模擬波形
5 全波傅氏演算法小結
全波富氏演算法能濾除所有的整次諧波分量,且穩定性
好,但其數據窗較長,所以其響應速度較慢.通過上面的模擬
結果,我們可以得出以下結論:
1)對照同一故障波形進行分析,可以看出:2種改進算
法所算結果都比較傳統傅氏演算法要精確.
2)在故障波形諧波含量都相同的情況下,衰減直流分
量的初始值越小,衰減時間常數越大時,衰減非周期分量對
基波以及各次諧波的影響越小.
3)筆者將采樣點數Ⅳ從16提高到32後,3種演算法誤差
均有一定程度的減小.如果進一步提高采樣率到64點/N或
128點/N時,對提高計算精度作用不大,而計算時間相應增
加.因此,將采樣點定為32點/周對減少誤差有益.
雖然改進演算法總體要比傳統演算法精確,但都還存在一個
無法避免的計算誤差,那就是所取數據窗內的正常數據和故
障數據的分辨問題.為了全部使用故障後的采樣值,往往取
i≥N/2,i表示從故障起始時刻開始第i個采樣點.本文中
是通過對改進演算法中P的調整,模擬故障發生後,起始采樣
點的位置.理論上如果有充足的判據是可以的,但無疑增加
了保護計算的時延和難度,而且跳過的半個周期采樣值不予
計算,這肯定會給故障時刻電流的計算帶來一定的誤差.因
此,這個問題還有待進一步的研究.

『捌』 c++編程對於遞歸函數的使用 應用於背包問題

#include <iostream>
using namespace std;
int list1[10];

//insersorrt function
void sorrt(int list[],int size)
{
for(int i=0;i<size;i++)
{
int max=list[i];
int k;
for(k=i-1;k>=0&&list[k]>max;k--)
{
list[k+1]=list[k];
}
list[k+1]=max;
}
}

void fun(int x,int y,int z,int list[],int m)
{
if(z==m)
{
for(int i=0;i<y;i++)
cout<<list1[i]<<" ";
cout<<endl;
}
else
{
for(x;x<10;x++)
{
if(list[x]<=m-z)
{
list1[y]=list[x];
fun(x+1,y+1,z+list[x],list,m);
}

}
}
}
int main()
{
int list[10];//declare a array

//cin the array in circulation
for(int i=0;i<10;i++)
cin>>list[i];

//sorrt the array in insert sorrtion
sorrt(list,10);

//cin the number you want to funtion
int m;
cin>>m;

//use recursion function to breake up the number m
fun(0,0,0,list,m);

return 0;
}

『玖』 rrt是什麼意思

rrt指快速遍歷隨機樹。

快速遍歷隨機樹(Rapidly-exploring Random Tree,RRT)是一種樹形數據存儲結構和演算法,通過遞增的方法建立,並快速減小隨機選擇點同樹的距離。

特點:

RRT 的特點是演算法建構簡單,並且可以快速遍歷空間的未探索區域,而通過手動設定找到實現這種效果的函數卻是很難的。同時RRT 可以在基本演算法基礎上,對空間的搜索加入帶有輸入參數的控制函數,使演算法可以適用於不同約束條件下的路徑搜索。

『拾』 RRT演算法中實現避障的程序應該怎麼表達

BP 網路的推廣能力。在本例中,我們採用兩種訓練方法,即 L-M 優化演算法(trainlm 函數訓練後的神經網路對樣本數據點實現了「過度匹配」,而經 trainbr

閱讀全文

與rrt演算法流程圖相關的資料

熱點內容
安卓平板android如何降級 瀏覽:124
蘋果怎麼下載整理文字軟體app 瀏覽:130
怎麼刪除一個app下載任務 瀏覽:713
python執行bat命令 瀏覽:471
什麼吉他調音器app最好 瀏覽:33
php程序員招聘試題 瀏覽:14
程序員升職記第九關最優解 瀏覽:317
三星安卓11怎麼訪問data文件夾 瀏覽:817
華三伺服器怎麼設置開機自啟 瀏覽:711
釘郵登錄伺服器地址 瀏覽:644
起源編譯器適配第二款應用 瀏覽:433
cad弄斷線條命令 瀏覽:463
怎麼恢復手機app的安裝包 瀏覽:300
idea重啟項目不編譯 瀏覽:495
程序員那麼可愛演員表陸漓媽媽 瀏覽:127
linuxgadget驅動 瀏覽:594
華三調用acl的命令 瀏覽:9
資金流pdf 瀏覽:931
金融結演算法補充條款 瀏覽:291
什麼叫伺服器怎麼連接 瀏覽:521