设计一个用于解决两关节机械手逆运动学问题的前馈网络,要求末端执行器的运动轨迹是一条直线( AB) ,具体任务如下:
(1)设计 合适的网络结构;
(2)按照 轨迹的要求选择 21 个训练样本 输入(Xi,Yi)输出(Sita1i,Sita2i) i=1,2......21
设 二联杆的长度为 ,用 BP 算法训练网络,使之能够满足控制的要求。
C++源代码
//其中,导入的样本空间数据和额定输出数据在后面的txt文件中给出
#include<iostream>
#include<cmath>
#include<fstream>
#include <windows.h>
#include<atlstr.h>
#include"random.h" //我建立的随即数生成器头文件,它将在我的另一篇博客中给出源代码
using namespace std;
const double ratio=2;
double fun(double x) //激活函数
{
return ratio*x;
}
double fundao(double x) //激活函数的导数
{
return ratio;
}
int main()
{
int i,j,k;
double precision=0.01;
double manipulator[21][2]; //样本空间,总共21个样本。
double d[21][2]; //额定输出
ifstream inmanipulator,ind; //导入样本空间数据和额定输出数据
inmanipulator.open("manipulator.txt");
ind.open("d.txt");
for(i=0;i<21;i++)
{
for(j=0;j<2;j++)
{