我的算法在处理小数字时精度完美,但在处理较大数字时精度会下降,但并非总是如此

我正在参与一个游戏,需要编程AI并与其他程序员竞争。这个游戏是一场比赛,你的飞船必须按顺序通过一些检查点。

你可以使用以下输入参数来编写算法:

nextCheckpoint (x,y) -> nX,nYlastCheckpoint (x,y) -> lnX,lnYcurrentposition (x,y) -> x,y

代码的输出是方向和推力。

int pod::errorX(){    int R[2];    int X1;    float b;    int DeltaX;    //检查点之间的线的向量    R[0] = nX-lnX;    R[1] = nY-lnY;    //计算飞船与线在X轴上的距离    b =(R[0]*(lnX-x) + R[1]*(lnY-y))/((-pow(R[0],2))-(pow(R[1],2)));    X1 = lnY + b*R[0];    DeltaX = x-X1;    cerr<<"Dx: "<<DeltaX<<endl;    return DeltaX;}

我也有对应的pod::errorY()

最后:

DirectionX = nX-errorX();DirectionY = nY-errorY();

这是我正在做的事情的一些图片:

理论上应该发生的情况

我想这样做是因为大多数时候惯性会使我的飞船绕着检查点旋转,这会消耗很多时间并使我输掉比赛。

好吧,现在让我们面对这个问题,有时它能工作,有时却完全不接近。

当输入较小时,比如:

nX= 2;nY= 2;lnX=0;lnY=0;x=0;y=0;

输出是:

directionX = 3directionY = 1

但当它们较大时:

nX= 6553;nY= 7817;lnX=13044;lnY=1908;x=13921;y=3530;

输出是:

DirectionX=6940;DirectionY=1907;

我不知道发生了什么。可能是由于b是小数吗?有没有我没看到的错误?

也许这段代码更适合测试,因为你不需要游戏:

#include <iostream>#include <string>#include <cmath>using namespace std;int main(){    int lnX = 13044;    int lnY = 7817;    int nX = 13044;    int nY = 1908;    int x = 13921;    int y = 3530;    int R[2]={};    //检查点之间的线的向量    R[0] = nX-lnX;    R[1] = nY-lnY;    //纯代数,用于计算X的偏移    int X1,DeltaX;    long double b;    b =(R[0]*(lnX-x) + R[1]*(lnY-y))/((-pow(R[0],2))-(pow(R[1],2)));    X1 = lnY + b*R[0];    DeltaX = x-X1;    //Y的偏移    int Y1,DeltaY;    Y1 = lnY+b*R[1];    DeltaY = y-Y1;    //方向    int DirectionX;    int DirectionY;    DirectionX = nX-DeltaX;    DirectionY = nY-DeltaY;    cout<<X1<<" "<<Y1<<endl;    cout<<DeltaX<<" "<<DeltaY<<endl;    cout<<b<<" "<<DirectionX<< " "<<DirectionY<<endl;

回答:

这行代码对吗?X1 = lnY + b*R[0];还是应该这样写X1 = lnX + b*R[0];

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注