我一直有一个特殊的问题。我在工作中在Linux集群上开发了一个C++程序。我尝试在Ubuntu 14.04机器上使用它,但是该程序由6个文件组成:main.hpp,main.cpp(依赖于)sarsa.hpp,sarsa.cpp(类Sarsa)(依赖于) wec.hpp、wec.cpp 确实可以编译,但是当我运行它时,它要么返回segmenation fault,要么不输入该类的一个基本函数Sarsa。
主要代码调用构造函数和setter函数没有问题:
Sarsa run;
run.setVectorSize(memory,3,tilings,1000);
Run Code Online (Sandbox Code Playgroud)
ETC。
但是,它无法运行公共函数episode,因为learningRate应该包含一个大整数,但对于所有剧集(迭代)都返回 0。
learningRate[episode]=run.episode(numSteps,graph);}
Run Code Online (Sandbox Code Playgroud)
我尝试使用 gdb 调试代码,它返回了:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000408f4a in main () at main.cpp:152
152 learningRate[episode]=run.episode(numSteps,graph);}
Run Code Online (Sandbox Code Playgroud)
我也尝试过valgrind,它返回:
==10321== Uninitialised value was created by a stack allocation
==10321== at 0x408CAD: main (main.cpp:112)
Run Code Online (Sandbox Code Playgroud)
但没有内存泄漏问题。
我想知道是否有一个设置可以尝试调试外部文件sarsa.cpp,因为我认为该类可能是罪魁祸首
在该文件中,我使用 C++v11 语言(不过,我预计会在编译时出现错误),因此我什至使用 进行了编译g++ -std=c++0x,但没有任何改进。
不幸的是,由于代码的大小,我无法将其发布在这里。我真的很感激任何有关这个问题的帮助。我错过了什么明显的事情吗?你至少能帮我调试一下吗?
预先感谢您的帮助。
更正:
main.cpp:
全局数组的定义:`#define numEpisodes 10
int LearningRate[numEpisodes];`
函数即将结束时main:
for (int …
我在 Github 上启动了一个新项目,因为我需要与人们合作,所以我想开始一个像样的文档。我想使用 Github Pages 来完成此任务,但文档需要包含许多方程,例如https://wec-sim.github.io/WEC-Sim/theory.html。
我在网上读到很多帖子,称 Mathjax 提供了一个在浏览器上读取方程的好工具,并且已链接到 Github 页面。然而,尽管我尝试遵循许多不同的策略,但我还无法让我的页面显示任何方程式。
您可以在https://github.com/enricoande/uuv找到我的项目,并在https://enricoande.github.io/uuv/找到相应的页面。该页面是从https://github.com/enricoande/uuv/blob/master/docs/README.md构建的。
最初,我根本无法显示方程式,但可以看到页面中的文本。现在,我什至无法看到该页面。添加文件https://github.com/enricoande/uuv/blob/master/docs/_layouts/page.html后会发生这种情况,其中内容如下
<script type="text/javascript"
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
Run Code Online (Sandbox Code Playgroud)
我看不到我的页面的原因是否有可能是Mathjax太慢了(我在网上找到了这方面的评论)?否则,您对我可以采取哪些措施来修复页面以显示方程有什么建议吗?
正如你所看到的,我是 Github 页面和 html 的初学者。
任何建议都非常感谢,因为我现在完全陷入困境。感谢您的帮助!
Simulink中的C编码S函数显示不正确的行为,我设法将问题缩小到不正确的整数乘法.
在代码的开头,我有类似的东西:
#define NRBF 21
#define NRBF1 NRBF+1
Run Code Online (Sandbox Code Playgroud)
然后,在脚本中的函数我有:
void function_name(SimStruct *S, const int_T a)
{
...
int_T base;
base = a*NRBF1;
printf("%i\t", a);
printf("%i\t", NRBF1);
printf("%i\n", base);
..
}
Run Code Online (Sandbox Code Playgroud)
现在,如果a=0,NRBF=21我有(而不是base=0)
0 22 1
Run Code Online (Sandbox Code Playgroud)
如果a=1,NRBF=21我有(如预期的那样base=22)
1 22 22
Run Code Online (Sandbox Code Playgroud)
如果a=2,NRBF=21我有(而不是base=44)
2 22 43
Run Code Online (Sandbox Code Playgroud)
现在,我必须说我有点困惑.我试图将乘法的行改为
base = a* (int_T)NRBF1;
Run Code Online (Sandbox Code Playgroud)
但它没有解决问题.
任何帮助将不胜感激!谢谢!