Simulink进行强化学习代理训练时,出现如下错误:
1 | Derivative of state '2' in block 'physicalModel/Nonlinear Second-Order Actuator/Integrator, Second-Order |
经过分析,导致该错误的原因是产生强化学习代理初始输入信号的Memory模块的初始值设为inf导致的。解决方法是修改Memory模块的初始值。
参考链接
- Simulink扩展卡尔曼滤波输出无结果的解决,by 渣渣丰.
Simulink进行强化学习代理训练时,出现如下错误:
1 | Derivative of state '2' in block 'physicalModel/Nonlinear Second-Order Actuator/Integrator, Second-Order |
经过分析,导致该错误的原因是产生强化学习代理初始输入信号的Memory模块的初始值设为inf导致的。解决方法是修改Memory模块的初始值。
在软件测试中,自动化测试指的是使用独立于待测软件的其他软件来自动执行测试、比较实际结果与预期并生成测试报告这一过程。在测试流程已经确定后,测试自动化可以自动执行的一些重复但必要测试工作。也可以完成手动测试几乎不可能完成的测试。对于持续交付和持续集成的开发方式而言,测试自动化是至关重要的。
WinAppDriver(Windows Application Driver)是一个类似Selenium的UI自动化测试服务。
系统要求: Windows10或Windows Server 2016。支持应用程序: UWP, WPF, WinForms, Win32。
UI Automation是Microsoft .NET 3.0框架下提供的一种用于自动化测试的技术,是在MSAA基础上建立的,MSAA就是Microsoft Active Accessibility。UI Automation在某些方面超过了MSAA,UI自动化提供了Windows Vista中,微软Windows XP的全部功能,和Windows Server 2003。
Selenium 是为web浏览器的自动化提供了各种工具和依赖包。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现 Web 界面的测试。
当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。
智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象的指针指向同一对象。
auto_ptr的实现原理其实是在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。
智能指针(smart_ptr)是Boost各组件中,应用最为广泛的一个。
Boost从很早就提供了如下的智能指针,并且功能一直保持稳定:
1 | template <typename T> |
c++ 11 提供了3种智能指针:std::shared_ptr、std::unique_ptr、std::weak_ptr,使用时引用头文件
开发某些自动化工具,第一步就是要获取目标窗口的句柄,然后通过该窗口句柄向该窗口发送消息,以实现自动输入等功能。而获取窗口句柄必然离不开Spy++工具。
符号&在C语言中代表取址符,在C++中则代表引用,是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
引用的声明方法:类型标识符 &引用名=目标变量名;
1 | int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名 |
引用的一个重要作用就是作为函数的参数。以前的C语言中函数参数传递是值传递,如果有大块数据作为参数传递的时候,采用的方案往往是指针,因为这样可以避免将整块数据全部压栈,可以提高程序的效率。但是现在(C++中)又增加了一种同样有效率的选择(在某些特殊情况下又是必须的选择),就是引用。
1 | void swap(int &p1, int &p2) //此处函数的形参p1, p2都是引用 |
要以引用返回函数值,则函数定义时要按以下格式:
类型标识符 &函数名(形参列表及类型说明)
{函数体}
1 | float &fn2(float r) //定义函数fn2,它以引用方式返回函数值 |
引用作为返回值,必须遵守以下规则:
12月11日,Boost社区发布了1.75版本,带来了JSON,LEAF,PFR三个新库。其中JSON自然是json格式的解析库,来自Vinnie Falco和Krystian Stasiowski。
其实在之前,Boost就已经有能够解析JSON的库了,名字叫做Boost.PropertyTree。Boost.PropertyTree不仅仅能够解析JSON,还能解析XML,INI和INFO格式的文件。但是由于成文较早及需要兼容其他的数据格式,相比较于其他的C++解析库,其显得比较笨重,使用的时候有很多的不方便。且存在以下问题:
Boost.JSON相对于Boost.PropertyTree来所,其只能支持JSON格式的解析,但是其使用方法更为简便,直接。华丽胡哨的东西也更多了。
远程云主机部署的Ubuntu 18.04 Server没有图形用户界面,而且自带的远程访问客户端不给力,因此考虑给Ubuntu 18.04 Server安装图形用户界面,同时打算使用Windows的
Linux服务器未安装桌面环境。我们的第一步是安装X11和一个轻量级的桌面环境,该环境将充当Xrdp的后端。
Ubuntu存储库中有几种可用的桌面环境(DE)。我们将安装 Xfce 。这是一个快速,稳定且轻巧的桌面环境,非常适合在远程服务器上使用。
1 | sudo apt update sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils |
Xrdp是Microsoft远程桌面协议(RDP)的开源实现,允许您以图形方式控制远程系统。使用RDP,您可以登录到远程计算机并创建真实的桌面会话,就像登录到本地计算机一样。如果您想要开放源代码的远程桌面访问解决方案,请使用 VNC 。
1 | sudo apt install xrdp |
1 | sudo nano /etc/xrdp/xrdp.ini |
1 | sudo ufw allow from 192.168.1.0/24 to any port 3389 |
如果您是Windows用户,则可以使用默认的RDP客户端。在Windows搜索栏中键入“ remote”,然后单击“ Remote Desktop Connection”。这将打开RDP客户端。在计算机字段中输入远程服务器IP地址,然后单击“连接”。
Boost C++ 库(Libraries)是一组扩展C++功能的经过同行评审(Peer-reviewed)且开放源码程序库。大多数的函数为了能够以开放源码或者封闭项目的方式运作,而许可于Boost软件许可协议(Boost Software License)之下。许多Boost的开发人员是来自C++标准委员会,而部分的Boost库成为C++的TR1标准之一。
为了要确保库的效率与弹性,Boost广泛的使用模板(template)功能。而它是针对各式领域的C++用户与应用领域(Application Domain)上,包含的库类别从像smart_ptr 库(页面存档备份,存于互联网档案馆)这种类通用库,到像是文件系统的操作系统抽象层,甚至能够利用Boost来开发额外的库或是给高级的C++用户利用,像是MPL。
1 | git clone https://github.com/boostorg/boost.git |
生成编译工具b2.exe:
1 | cd %BOOST_ROOT% |
1 | b2 --buildtype=complete |
1 | # 可查看所有必须编译才能使用的库 |
编译结果在stage\lib目录下生成regex库(Debug/Release):
1 | libboost_regex-vc100-mt-1_77.lib |
相关参数的含义:
stage 仅创建和安装库文件(不创建头文件),可以用 –stagedir= 选项指定库的安装位置,默认安装在当前目录下的stage文件夹内。
–with- 创建和安装指定的库,如果使用了这个选项,则仅仅指定的库被创建,其它库不被创建。如果不指定这个选项,默认创建所有需要编译安装的库。
link=static指定生成静态regex库
threading=multi指定生成多线程库
runtime-link=shared指定动态链接C和C++ 运行库
这种方式的文件操作有一个重要的结构FILE,FILE在头文件stdio.h中定义。
这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,而上篇所说流式文件操作是通过缓冲区来进行;流式文件操作是围绕一个FILE指 针来进行,而此类文件操作是围绕一个文件的“句柄”来进行。
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O。
WINAPI提供了两种文件操作函数,一组是为了和16位程序兼容,这种函数比较简单;而另一种是专门为32位程序设计。