选用的算法
⑴ 1.选用优先级算法和时间片轮转算法模拟实现进程调度算法
我们考试上交的 能运行
#define MAX 100
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int b;//存放进程本次结束时的时间
void main()
{
int i,N,t,k;
int a[MAX];//存放进程的剩余时间
int cnt[MAX];//存放进程调度次数
printf("请输入进程数N:");
scanf("%d",&N);
printf("\n请输入时间片t大小:");
scanf("%d",&t);
printf("\n请依次输入各个进程的服务时间");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
cnt[i]=0;
}
printf("被调度进程\t进程调度次数 \t本次运行时间结果\t剩余时间\n");
k=1;
while(k)
{
for(i=0;i<N;i++)
{
if(a[i]!=0)
if(a[i]>=t)
{
a[i]-=t;
b+=t;
cnt[i]=cnt[i]+1;
printf("\n\t%d\t\t%d\t\t%d\t\t%d",i+1,cnt[i],b,a[i]);
}
else
{
b=b+a[i];
cnt[i]=cnt[i]+1;
a[i]=0;
printf("\n\t%d\t\t%d\t\t%d\t\t%d",i+1,cnt[i],b,a[i]);
}
else continue;
}
for(i=0;i<N;i++)
if(a[i]!=0)
{ k=1;break;}
else continue;
if(i>=N)
k=0;
}
printf("\n");
printf("进程全部运行完成!");
printf("\n");
}
⑵ 机器学习算法选择问题
你这个类似故障分类问题了。分以下两种情况给你提供个思路吧:
1.如果你的数据是有标签的,那就可以做有监督的机器学习了。
就是你的数据样本是某时刻各种属性值,标签是此时刻是否有零件有故障以及哪个零件故障。
可以选用的模型有:LogisticRegression、SVM、NaiveBayes、DecisionTree、KNN等,较浅的神经网络也是可以的。
2.如果你的数据没有标签,就不太好办了,可以试试无监督的聚类方法看看有没有什么发现。如Kmeans。
3.我做过的故障分类是有监督的,零件属于某个子系统,子系统又属于某个系统。我先对系统建模,再对子系统建模,再对零件建模,逐步定位到具体问题。
4.如果你的数据真的是无标签的,另外给你提供个线索,可以去研究下自编码网络。
⑶ 学习算法 特征的选择算法有哪些
一个算法应该具有以下五个重要的特征:
1、有穷性: 一个算法必须保证执行有限步之后结束;
2、确切性: 算法的每一步骤必须有确切的定义;
3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;
4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
5、可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成
⑷ 选择哪种优化算法比较好
如果追求结果 那么可以用穷举方法 也就是一个个试验 其他的优化算法都差不多 可以确定一个条件数 然后达到这个数值才停止优化
⑸ 6,路由选择有哪些算法
关于路由器如何收集网络的结构信息以及对之进行分析来确定最佳路由,有两种主要的路由算法:
总体式路由算法和分散式路由算法。采用分散式路由算法时,每个路由器只有与它直接相连的路由器的信息——而没有网络中的每个路由器的信息。这些算法也被称为dv(距离向量)算法。采用总体式路由算法时,每个路由器都拥有网络中所有其他路由器的全部信息以及网络的流量状态。这些算法也被称为ls(链路状态)算法。
⑹ 如何选择合适的数据挖掘算法
首先是根据你的目的和思路
其次要根据支持数据的类型
最后要看准确性和可靠性等
⑺ 初学者如何选择合适的机器学习算法(附算法
如何为分类问题选择合适的机器学习算法 若要达到一定的准确率,需要尝试各种各样的分类器,并通过交叉验证选择最好的一个。但是,如果你只是为你的问题寻找一个“足够好”的算法或者一个起点,以下准则有利于选择合适的分类器:你的训练集有多大?如果训练集很小,那么高偏差/低方差分类器(如朴素贝叶斯分类器)要优于低偏差/高方差分类器(如k近邻分类器),因为后者容易过拟合。然而,随着训练集的增大,低偏差/高方差分类器将开始胜出(它们具有较低的渐近误差),因为高偏差分类器不足以提供准确的模型。这可以认为这是生成模型与判别模型的区别。一些特定算法比较朴素贝叶斯优点:简单;如果朴素贝叶斯(NB)条件独立性假设成立,相比于逻辑回归这类的判别模型,朴素贝叶斯分类器将收敛得更快,所以你只需要较小的训练集。而且,即使NB假设不成立,朴素贝叶斯分类器在实践方面仍然表现很好。如果想得到简单快捷的执行效果,这将是个好的选择。缺点:不能学习特征之间的相互作用(比如,它不能学习出:虽然你喜欢布拉德·皮特和汤姆·克鲁斯的电影,但却不喜欢他们一起合作的电影)。逻辑回归优点:有许多正则化模型的方法,不需要像在朴素贝叶斯分类器中那样担心特征间的相互关联性。与决策树和支持向量机 不同,有一个很好的概率解释,并能容易地更新模型来吸收新数据(使用一个在线梯度下降方法)。如果你想要一个概率框架(比如,简单地调整分类阈值,说出什么时候是不太确定的,或者获得置信区间),或你期望未来接收更多想要快速并入模型中的训练数据,就选择逻辑回归。决策树优点:易于说明和解释,很容易地处理特征间的相互作用,并且是非参数化的,不用担心异常值或者数据是否线性可分(比如,决策树可以很容易地某特征x的低端是类A,中间是类B,然后高端又是类A的情况)。缺点:1)不支持在线学习,当有新样本时需要重建决策树。2)容易过拟合,但这也正是诸如随机森林(或提高树)之类的集成方法的切入点。另外,随机森林适用于很多分类问题(通常略优于支持向量机)---快速并且可扩展,不像支持向量机那样调一堆参数。随机森林正渐渐开始偷走它的“王冠”。 SVMs 优点:高准确率,为过拟合提供了好的理论保证;即使数据在基础特征空间线性不可分,只要选定一个恰当的核函数,仍然能够取得很好的分类效果。它们在超高维空间是常态的文本分类问题中尤其受欢迎。然而,它们内存消耗大,难于解释,运行和调参 复杂,尽管如此,更好的数据往往胜过更好的算法,设计好的特征非常重要。如果有一个庞大数据集,这时使用哪种分类算法在分类性能方面可能并不要紧;因此,要基于速度和易用性选择算法。
⑻ 选择排序算法
#include<stdio.h>
int main(){
int n,k,i,j,m;
int a[100];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(a[i]>a[j]){
k=a[j];
a[j]=a[i];
a[i]=k;
}
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 1;
}