西电电院人工智能课程大作业Word下载.docx
《西电电院人工智能课程大作业Word下载.docx》由会员分享,可在线阅读,更多相关《西电电院人工智能课程大作业Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
stdio.h>
typedefstructNode{
intnum[9];
//棋盘状态
intdeepth;
//派生的深度g(n)
intdiffnum;
//不在位的数目h(n)
intvalue;
//耗散值f(n)=g(n)+h(n)
structNode*pre;
structNode*next;
structNode*parent;
}numNode;
/*----------endofstructnumNode----------*/
intorigin[9];
//棋盘初始状态
inttarget[9];
//棋盘目标状态
intnumNode_num,total_step;
numNode*open,*close;
//Open表和Close表
numNode*create_numNode()
{
return(numNode*)malloc(sizeof(numNode));
}
numNode*open_getfirst(numNode*head);
//返回第一项,并从Open表中删除
voidopen_insert(numNode*head,numNode*item);
//向Open表中按序插入新节点
voidclose_append(numNode*head,numNode*item);
//向Close表中插入新节点
intexpand(numNode*item);
//扩展节点
intprint_result(numNode*item);
//打印结果
numNode*copy_numNode(numNode*orgin);
charisNewNode(numNode*open,numNode*close,intnum[9]);
//是否在Open表或Close表中
voidprint_num(intnum[9]);
//打印棋盘状态
intdiff(intnum[9]);
//求不在位棋子的个数
voidinit();
//初始化,获得棋盘初始状态和目标状态
voidswap(int*a,int*b);
intoperate(intnum[],intop);
voidfree_list(numNode*head);
/*
*Name:
主函數
*Description:
程序入口
*/
Intmain(intargc,char*argv[])
//初始化Open表和Close表
open=create_numNode();
close=create_numNode();
open->
pre=open->
next=close->
pre=close->
next=NULL;
init();
//由用户输入初始和目标状态
//初始化初始节点
numNode*p1;
p1=create_numNode();
p1->
parent=NULL;
deepth=0;
inti=0;
for(i=0;
i<
9;
i++)
{
num[i]=origin[i];
}
open_insert(open,p1);
numNode_num=1;
p1=open_getfirst(open);
while(p1!
=NULL)
close_append(close,p1);
if(expand(p1))
returnEXIT_SUCCESS;
printf("
Nosolution!
\n"
);
}/*----------endoffunctionmain----------*/
void
init()
while
(1)
Pleaseinputopriginalstatus:
\nForexample:
123456780standsfor\n"
"
123\n"
456\n"
780\n"
chartemp[10];
scanf("
%s"
&
temp);
i<
9&
&
temp[i]-'
0'
>
=0&
<
=8;
origin[i]=temp[i]-'
;
Pleaseinputtargetstatus:
intj=0;
for(j=0;
j<
temp[j]-'
j++)
target[j]=temp[j]-'
system("
cls"
if(i==9&
j==9)
break;
}/*-----endoffunctioninit-----*/
open_insert(numNode*head,numNode*item)
numNode*p,*q;
p=head->
next;
q=head;
while(p!
=NULL&
item->
value>
p->
value)
q=p;
p=p->
q->
next=item;
pre=q;
next=p;
if(p!
pre=item;
}/*-----endoffunctionopen_insert-----*/
numNode*
open_getfirst(numNode*head)
numNode*p;
if(head->
next==NULL)
returnNULL;
head->
next=p->
if(p->
next!
=NULL)
next->
pre=head;
pre=NULL;
returnp;
}/*-----endoffunctionopen_getfirst-----*/
close_append(numNode*head,numNode*item)
next=head->
if(item->
next!
=NULL)
}/*-----endoffunctionclose_append-----*/
int
expand(numNode*p1)
numNode*p2;
intop=1;
for(op=1;
op<
=4;
op++)
p2=copy_numNode(p1);
operate(p2->
num,op);
if(isNewNode(open,close,p2->
num)=='
N'
)
p2->
parent=p1;
deepth=p1->
deepth+1;
diffnum=diff(p2->
num);
value=p2->
deepth+p2->
diffnum;
if(p2->
diffnum==0)
total_step=print_result(p2);
Totalstep:
%d\n"
total_step);
free_list(open);
free_list(close);
return1;
else
numNode_num++;
open_insert(open,p2);
free(p2);
return0;
}/*-----endoffunctionexpand-----*/
operate(intm[],intop)
intblank;
blank=0;
while(m[blank]!
blank<
9)
++blank;
if(blank==9)
switch(op){
case1:
/*up*/
if(blank>
2)
swap(m+blank,m+blank-3);
case2:
/*down*/
if(blank<
6)
swap(m+blank,m+blank+3);
case3:
/*left*/
if(blank!
blank!
=3&
=6)
swap(m+blank,m+blank-1);
case4:
/*right*/
=2&
=5&
=8)
swap(m+blank,m+blank+1);
default:
swap(int*a,int*b)
intc;
c=*a;
*a=*b;
*b=c;
copy_numNode(numNode*origin)
p=create_numNode();
deepth=origin->
deepth;
diffnum=origin->
value=origin->
value;
inti;
(p->
num)[i]=(origin->
num)[i];
}/*-----endoffunctioncopy_numNode-----*/
diff(intnum[9])
inti,diffnum=0;
for(i=0;
i++)
if(num[i]!
=target[i])
diffnum++;
returndiffnum;
}/*-----endoffunctiondiff-----*/
char
isNewNode(numNode*open,numNode*close,intnum[9])
p=open->
if(p->
num[i]!
=num[i])
if(i==9)
return'
O'
//Open
p=close->
i++)
C'
//Close
}/*-----endoffunctionisNewNode-----*/
free_list(numNode*head)
q=p->
free(p);
p=q;
free(head);
}/*-----endoffunctionfree_list-----*/
print_num(intnum[9])
{
%d\t"
num[i]);
if((i%3)==2)
}/*-----endoffunctionprint_num-----*/
print_result(numNode*item)
intstep;
p=item;
step=print_result(p->
parent);
\nStep%d:
step+1);
print_num(p->
returnstep+1;
return-1;
}
4.结果:
下图实验结果中,一步代表一层的搜索结果中的最优解;
八数码难题的宽度优先搜索树:
5.实验分析
宽度优先搜索属于一种盲目搜索算法,可以系统的展开所有节点,理论上一定能达到搜寻目的。
但是,倘若搜索步骤太多,则会十分费时,所以应考虑具体问题具体改进。
本实验结果中,一步代表一层的搜索结果中的最优解;
以简化输出显示,实验耗时也在可以接受的程度。
6.结论
经过分析和查询相关资料,本报告决定采用宽度优先搜索来求解问题,划定流程图及明确算法步骤之后,经多次调试和修改,最终得出有效结论,找出了八数码难题的解。
本报告严格依照实验和报告的要求进行,从分析查找到最终得出阶段性结论的过程中,收获了宝贵的经验。
人工神经网络和神经模糊技术,在用图像处理甜樱桃果实
成熟过程中,检测抗氧化活性与花青素的量时的潜力评估
摘要
背景
本文介绍了一种别样的思路,糅合了图像处理技术和两种人工智能技术,在樱桃成熟的不同阶段,检测抗氧化活性与花青素的量。
与普通的冗长实验理论相比,本方法有重要贡献,它更经济,更快捷。
精确地人工神经网络技术(ANN),和自适应神经模糊推理系统理论(ANFIS),被用以检测输出。
ANNandANFIS使用的敏感性分析和主成分分析,分别指出了输出的有效属性。
RESULTS
结果
AmongthedesignedANNs,twohiddenlayernetworkswith11-14-9-1and11-6-20-1architectureshadthehighestcorrelationcoefficientsandlowesterrorvaluesformodelingantioxidantactivity(R=0.93)andanthocyanincontent(R=0.98)respectively.ANFISmodelswithtriangularandtwo-termGaussianmembershipfunctionsgavethebestresultsforantioxidantactivity(R=0.87)andanthocyanincontent(R=0.90)respectively.
所设计的神经网络中,两个隐层的网络体系结构和11-6-20-111-14-9-1,具有最高的相关系数和最低误差值,抗氧化活性(R=0.93)和花青素含量(R=0.98)。
ANFIS模型的三角函数和两项高斯隶属函数,给出了最好的结果,分别是:
抗氧化活性(R=0.87)和花青素含量(R=0.90)。
CONCLUSION
结论
ComparisonofthemodelsshowedthatANNoutperformedANFISforthiscase.Byconsideringtheadvantagesoftheappliedsystemandtheaccuracyobtainedinsomewhatsimilarstudies,itcanbeconcludedthatbothtechniquespresentedherehavegoodpotentialtobeusedasestimatorsofproposedattributes.©
2013SocietyofChemicalIndustry
模型的比较表明,人工神经网络优于ANFIS这个案子。
考虑到类似的研究应用系统和精度的优点,可以得出这样的结论:
这里介绍的技术有很好的潜力被用作估计该属性。
©
2013化学工业协会
简介
甜樱桃(Prunusavium)是一种流行的水果,无论新鲜的还是加工过的。
,伊朗被评为世界第三大甜樱桃生产国,每年生产约241117MT。
Humansliveinahighlyoxidativeenvironment,andmanyprocessesinvolvedinmetabolismmayresultintheproductionofexcessfreeradicals,whichcanleadtohealthproblems.[2]Oxidationcausestheformationoftoxiccompoundsthatareharmfultohumanhealth,suchasreactiveoxygenspeciesandfreeradicals,whichcanleadtocarcinogenesis,mutagenesis,inflammation,DNAchanges,aging,cardiovasculardiseaseandnutritionalloss.[3-5]Inaddition,oxidationmayresultinunpleasantflavorandrancidtaste.[6,7]Thereisgrowinginterestamongfoodproducersandconsumersintheuseofnaturalantioxidantsbecauseoftheirprotectiveroleagainstoxidation.[8]Thusitmaybebeneficialtofindarapidandnon-destructivewayforestimatingthisattributeinfruitsasanimportantsourceofantioxidants.
人类生活在一个高度氧化的环境,参与许多代谢过程可能会导致过量的自由基的产生,从而导致健康问题。
氧化导致有毒化合物的形成,如活性氧和自由基,从而导致致癌,诱变,炎症,基因的变化,老化,心血管疾病和营养损失,对人类的健康是有害的。
另外,氧化可能会导致不愉快的味道和腐臭。
含有天然抗氧化剂的食品,因为其抗氧化保护作用,越来越受生产商和消费者的欢迎。
可以有利于发现估计这个属性在水果作为一种重要的的。
寻找一种快速的,非破坏性的方式,检测水果的这个属性,作为抗氧化剂的重要来源,有利可图。
花青素,植物颜料中这是最常见的,似乎有多种功能。
例如,作为着色剂和食品质量控制指标。
最近,增近对它的了解,发现对人体健康有利,已经导致花青素研究加剧。
近年来,Variousdatamining/artificialintelligence(DM/AI)techniquessuchasdecisiontrees,artificialneuralnetworks(ANNs),geneticalgorithms,fuzzysets,expertsystems,etc.havebeenincreasinglyappliedincombinationwithmachinevision(MV)foragriculturalproductqualityevaluationinrecentyears
各种数据挖掘、人工智能(DM/AI)技术,如决策树,人工神经网络(ANN),遗传算法,模糊集,专家系统等,已被越来越多地应用于机器视觉的组合(MV),以进行农产品质量评价。
农产品的图像处理的一个新领域被用来估计一些质量属性,如植物色素的抗氧化活性。
采用独立分量分析的西红柿光谱图像,估计番茄红素和叶绿素浓度。
最近,taghadomi萨贝里等人,结合图像处理和人工神经网络技术,在酸樱桃在成熟过程中,估计抗氧化活性与花青素含量。
Giventhefactsthatantioxidantsh