“人造太阳”计划

terminate called after throwing an instance of 'std::length_error'

匿名 (未验证) 提交于 2019-12-03 00:50:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: this is my first post here. As i am newbie, the problem might be stupid. I was writing a piece of code while the following error message shown, terminate called after throwing an instance of 'std::length_error' what(): basic_string::_S_create /home/gcj/finals /home/gcj/quals where Aborted the following is the offending code especially Line 39 to Line 52. It is weired for me as this block of code is almost same as the Line64 to Line79. int main(){ std::vector<std::string> dirs, need; std::string tmp_str; std::ifstream fp_in("small.in"); std:

C++map的用法整理

匿名 (未验证) 提交于 2019-12-03 00:27:02
参考博客 点击打开链接 1、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。 对于迭代器来说,可以修改实值,而不能修改key。 2、map的功能 根据key值快速查找记录,查找的复杂度基本是Log (N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。 快速删除记录 遍历所有记录。 3、使用map 使用map得包含map类所在的头文件 map对象是模板类,需要关键字和存储对象两个模板参数: std:map< int 这样就定义了一个用int作为索引,并拥有相关联的指向string的指针. 4. map的构造函数 map共提供了6个构造函数,这块涉及到内存分配器这些东西,略过不表,在下面我们将接触到一些map的构造方法,这里要说下的就是,我们通常用如下方法构造一个map: 在构造map容器后,我们就可以往里面插入数据了。这里讲三种插入数据的方法: 第一种: 用insert函数插入pair数据 #include <iostream> #include <cstdio> #include <cstdlib> #include <map> using namespace std ; int main() { map<int ,string > stu ; map<int

机器学习实战笔记:支持向量机

匿名 (未验证) 提交于 2019-12-03 00:22:01
SVM的一般流程: 收集数据; 准备数据:数值型 分析数据:有助于可视化分隔超平面 训练算法; 测试算法; 使用算法; 简化的SMO算法: 创建alpha向量并将其初始化为0向量 while 迭代次数<最大迭代次数:(外循环) 对数据集中每个数据向量(内循环): if 该数据向量可以被优化: 随机选择另外一个数据向量 同时优化这两个向量 if 这两个向量都不能被优化: 退出内循环 if 所有向量都没被优化: 增加迭代数目,继续下一次循环 def somSimple(dataMatIn,classLabels,C,toler,maxIter): #5个输入参数:数据集,类别标签,常数C,容错率和最大循环次数 dataMatrix=mat(dataMatIn) labelMat=mat(classLabels).transpose() b=0 m,n=shape(dataMatrix) #m是样本个数,n是特征数 alphas=mat(zeros((m,1))) #alpha矩阵,alpha个数等于样本个数 iter=0 #用于存储在没有任何alpha改变的情况下遍历数据集的次数 while(iter<maxIter): alphaPairsChanged=0 #记录alpha是否已经进行了优化 for i in range(m): fXi=float(multiply(alphas

关于C++ vector等容器排序问题

匿名 (未验证) 提交于 2019-12-03 00:21:02
C++ vector排序 参考 https://blog.csdn.net/upc_xbt/article/details/53305962 注意: #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int num=0; cin>>num; string str; vector<string> word; while(cin>>str) { word.push_back(str); } sort(word.begin(),word.end()); for(auto iter=word.cbegin();iter!=word.cend();iter++) { cout<<*iter<<endl; } } sort函数不能用cbegin(),即如下是错误的: sort(word.cbegin(),word.cend()); 文章来源: 关于C++ vector等容器排序问题

蚁群算法求解TSP问题

匿名 (未验证) 提交于 2019-12-03 00:17:01
一、蚁群算法简介 二、TSP问题(旅行商问题) 1、构建图:构建图与问题描述图是一致的,成份的集合C对应着点的集合(即:C=N),连接对应着边的集合(即L=A),且每一条边都带有一个权值,代表点i和j之间的距离。 2、约束条件:所有城市都要被访问且每个城市最多只能被访问一次。 3、信息素和启发式信息:TSP 问题中的信息素表示在访问城市i后直接访问城市j的期望度。启发式信息值一般与城市i和城市j的距离成反比。 4、解的构建:每只蚂蚁最初都从随机选择出来的城市出发,每经过一次迭代蚂蚁就向解中添加一个还没有访问过的城市。当所有城市都被蚂蚁访问过之后,解的构建就终止。 随机生成50个城市进行测试,初始蚂蚁数量为50,信息素重要程度因子alpha = 1,启发函数重要程度因子beta = 5,信息素挥发因子rho = 0.1, 最大迭代次数为150 %% 旅行商问题(TSP)优化 %% 清空环境变量 clear all clc %% 导入数据 %load citys_data.mat city = ceil(rand(50,2) * 5000) load city.mat %% 计算城市间相互距离 fprintf('Computing Distance Matrix... \n'); n = size(city,1); D = zeros(n,n); for i = 1:n for j =

python学习笔记,视频day18-迭代器、

冷暖自知 提交于 2019-12-03 00:15:02
一、递归:函数自己调用自己   举例:问路 二、迭代:每次循环得到的结果都是依赖上一次而来的   举例:生宝宝 三、迭代器协议 迭代器协议:对象必须提供一个 next 方法,执行该方法姚蜜返回迭代中的下一项,要么就引起一个Stoplteration异常,以终止迭代(只能往后走不能往前退) 可迭代对象: 实现了迭代器协议的对象 (如何实现:对象内部定义一个_iter_()方法) 协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max)使用迭代器协议访问对象 四、for循环 (字符串,列表,元组,字典,集合,文件对象)这些都不是可迭代对象,只不过在for循环时,调用了他们内部的_iter_方法,把他们变成了可迭代对象然后for循环调用可迭代对象的_next_方法去取值,而且捕捉Stoplteration异常,终止迭代 l=[1,2,3,4] iter_test=l.__iter__()#遵循迭代器协议转换成可迭代对象 print(iter_test) print(iter_test.__next__()) print(iter_test.__next__()) # <list_iterator object at 0x00A1DE50> # 1 # 2 #只用索引进行遍历,while循环无法遍历字典、集合 l=[1,2,3,4]

004 list::sort

匿名 (未验证) 提交于 2019-12-03 00:13:02
#include "stdafx.h" #include <iostream> #include <list> using namespace std ; typedef struct SStud { int nNumb ; char szName [ 20 ]; double fMath ; } DATA ; bool byNumb ( const DATA & dMin , const DATA & dCompare ) { if ( dMin . nNumb < dCompare . nNumb ) { return true ; } return false ; } bool byName ( const DATA & dMin , const DATA & dCompare ) { int nResult = strcmp ( dMin . szName , dCompare . szName ); if ( nResult < 0 ) { return true ; } return false ; } void test () { list < SStud > c1 ; list < SStud >:: iterator iter ; DATA d1 = { 1 , "asd" , 1.1 }; DATA d2 = { 22 , "222" , 2.1 }; DATA

使用mxnet实现卷积神经网络LeNet

匿名 (未验证) 提交于 2019-12-03 00:11:01
LeNet是一个早期用来识别手写数字的卷积神经网络,这个名字来源于LeNet论文的第一作者Yann LeCun。LeNet展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当时最先进的成果,这个尊基性的工作第一次将卷积神经网络推上舞台 上图就是LeNet模型,下面将对每层参数进行说明 假设输入层数据shape=(32,32) 卷积核大小: kernel_size=(5,5) 步幅:stride = 1 输出通道为6 可训练参数为: (5 * 5 + 1) * 6 激活函数:采用relu 输入层数据经过C1卷积层后将得到feature maps形状(6 * 28 * 28),注:28 = 32 -5 + 1 池化层(Max Pooling)窗口形状均为2 2,步幅度为2,输出feature maps为(6 14 * 14),6为feature map的数量 卷积核大小: kernel_size=(5,5) 步幅:stride = 1 输出通道为16 激活函数:采用relu得到feature maps为(16 * 10 * 10),(10*10)为每个feature map形状,16为feature map数量 池化层(Max Pooling)窗口形状依然均为2 2,步幅度为2,输出feature maps为(16 5 * 5),16为feature map的数量

Spark RDD 算子总结

大城市里の小女人 提交于 2019-12-03 00:10:19
Spark算子总结 算子分类 Transformation(转换) 转换算子 含义 map(func) 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 filter(func) 过滤, 返回一个新的RDD, 该RDD由经过func函数计算后返回值为true的输入元素组成 flatMap(func) 类似于map,但是每一个输入元素可以被映射为0或多个输出元素(所以func应该返回一个序列,而不是单一元素) mapPartitions(func) 类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RDD上运行时,func的函数类型必须是Iterator[T] => Iterator[U] mapPartitionsWithIndex(func) 类似于mapPartitions,但func带有一个整数参数表示分片的索引值,因此在类型为T的RDD上运行时,func的函数类型必须是(Int, Interator[T]) => Iterator[U] union(otherDataset) 对源RDD和参数RDD求并集后返回一个新的RDD Intersection(otherDataset) 对源RDD和参数RDD求交集后返回一个新的RDD groupByKey([numTasks]) 在一个(K,V)的RDD上调用,返回一个(K, Iterator

c++之迭代器

匿名 (未验证) 提交于 2019-12-03 00:03:02
一、迭代器简介 二、容器的迭代器类型 vector<int> iv = {100,200,300}; vector<int>::iterator iter; // 定义迭代器 三、迭代器相关操作 //begin() end()操作一般返回迭代器类型,反向迭代器rbegin()/rend(); vector<int> iv={100,200,300}; vector<int>::iterator iter; // 定义迭代器 iter = iv.begin(); //如果容器有元素,返回的迭代器指向第一个元素 iter = iv.end(); //指向末端元素的后边,为无效数据//如果一个容器为空,则begin()和end()返回的迭代器相同,起到标记的作用。 vector<int> iv={100,200,300}; // 使用正向迭代器 for(vector<int>::iterator iter = iv.begin(); iter != iv.end(); iter++){  cout << *iter << endl; //100 200 300} // 使用反向迭代器 for(vector<int>::reverse_iterator riter = iv.rbegin(); riter != iv.rend(); riter++){  cout << *riter <<