📄 speed.cpp
字号:
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define popsize 100 //种群大小
#define totalgen 100 //遗传总代数
#define pm 0.2 //变异概率
#define pc 0.4 //交换概率
#define w 0.001157 //旋转角速度
#define n 3
//#define maxJ 500 //求适应度函数的常参数
struct individual //个体
{
double chromosome; //染色体
double J; //个体对应的变量值
double fitness; //个体适应度
double totalfitness; //累计适应度
};
struct individual nowpop[100]; //当前代种群
struct individual nextpop[100]; //新一代种群
double min; //目标变量T所允许的最小值
double max; //目标变量T所允许的最大值
double maxJ=500; //为变量J找到最大的值
float k; //燃料与时间的比例权值
double p0[n][1]; //初始相对位置
double v0[n][1]; //初始相对速度
double av1[n][1]; //起始速度增量
double av2[n][1]; //终端速度增量
double randf()
{
return (double)(rand()/(double)32767);
}
void calSpeed(double chromosome) //计算v1v2
{
int i,j;
double q=w*chromosome;
double temp[n][n]; //临时存放计算数据
double temp1[n][n];
double temp2[n][1]; //临时存放计算数据
double temp3[n][1]; //临时存放计算数据
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
temp[i][j]=0;
temp1[i][j]=0;
}
for(i=0;i<3;i++)
{
temp2[i][0]=0;
temp3[i][1]=0;
}
double a11;
a11=sin(q);
double a12;
a12=14*(1-cos(q))-6*q*sin(q);
double a21;
a21=-2*(1-cos(q));
double a22;
a22=4*sin(q)-3*q*cos(q);
double a33;
a33=-cos(q);
double b;
b=3*q*sin(q)-8*(1-cos(q));
double t11[3][3]={a11/b,a12/b,0,
a21/b,a22/b,0,
0, 0, a33};
double t12[3][3]={(4*cos(q)-3),-2*sin(q),0,
2*sin(q),cos(q),0,
0,0,cos(q)};
double t21[3][3]={0,-6*w*(1-cos(q)),0,
0,3*w*sin(q),0,
0,0,-w*sin(q)};
for(i=0;i<3;i++)
{
av1[i][0]=0;
av2[i][0]=0;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
temp[i][j]=w*t11[i][j];
}
for(i=0;i<3;i++)
{
temp2[i][0]=temp[i][0]*p0[0][0]+temp[i][1]*p0[1][0]+temp[i][2]*p0[2][0];
}
for(i=0;i<3;i++)
{
av1[i][0]=temp2[i][0]-v0[i][0];
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
temp[i][j]=w*t12[i][j];
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
temp1[i][j]=temp[i][0]*t11[0][j]+temp[i][1]*t11[1][j]+temp[i][2]*t11[2][j];
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
temp1[i][j]=temp1[i][j]+t21[i][j];
}
for(i=0;i<3;i++)
{
av2[i][0]=-(temp1[i][0]*p0[0][0]+temp1[i][1]*p0[1][0]+temp1[i][2]*p0[2][0]);
}
}
void main()
{
double temp;
double temp2;
p0[0][0]=150000;
p0[1][0]=-800;
p0[2][0]=0;
v0[0][0]=-100;
v0[1][0]=10;
v0[2][0]=0;
calSpeed(2023.23);
temp=sqrt(av1[0][0]*av1[0][0]+av1[1][0]*av1[1][0]+av1[2][0]*av1[2][0]);
temp2=sqrt(av2[0][0]*av2[0][0]+av2[1][0]*av2[1][0]+av2[2][0]*av2[2][0]);
cout<<temp<<endl<<temp2<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -