//建议使用vc2005以上的编译器,加油!!~!
#include <stdio.h>
#include <cmath>
#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;
const int iAntCount=34;//蚂蚁数量
const int iCityCount=51;//城市数量
const int iItCount=2000;//最大跌代次数
const double Q=100;
const double alpha=1;
const double beta=5;
const double rou=0.5;
int besttour[iCityCount];//最有路径列表
double rnd(int low,double uper)//获得随机数
{
double p=(rand()/(double)RAND_MAX)*((uper)-(low))+(low);
return (p);
};
int rnd(int uper)
{
return (rand()%uper);
};
class GInfo//tsp地图信息,包含了信息素,城市距离,和信息素变化矩阵
{
public:
double m_dDeltTrial[iCityCount][iCityCount];
double m_dTrial[iCityCount][iCityCount];
double distance[iCityCount][iCityCount];
};
GInfo Map;
class ant
{
private:
int ChooseNextCity();//选择城市
double prob[iCityCount];
int m_iCityCount;
int AllowedCity[iCityCount];//没有走过的城市
public:
void addcity(int city);
int tabu[iCityCount];
void Clear();
void UpdateResult();
double m_dLength;
double m_dShortest;
void move();
ant();
void move2last();
};
void ant::move2last()
{
int i;
for(i=0;i<iCityCount;i++)
if (AllowedCity[i]==1)
{
addcity(i);
break;
}
}
void ant::Clear()
{
m_dLength=0;
int i;
for(i=0; i<iCityCount;i++)
{
prob[i]=0;
AllowedCity[i]=1;
i=tabu[iCityCount-1];
m_iCityCount=0;
addcity(i);
}
}
ant::ant()
{
m_dLength=m_dShortest=0;
m_iCityCount=0;
int i;
for(i=0;i<iCityCount;i++) {
AllowedCity[i]=1;
prob[i]=0;
}
}
void ant::addcity(int city)
{
//add city to tabu;
tabu[m_iCityCount]=city;
m_iCityCount++;
AllowedCity[city]=0;
}
int ant::ChooseNextCity()
{
//Update the probability of path selection
//select a path from tabu[m_iCityCount-1] to next
int i;
int j=10000;
double temp=0;
int curCity=tabu[m_iCityCount-1];
for (i=0;i<iCityCount;i++) {
if((AllowedCity[i]==1))
{
temp+=pow((1.0/Map.distance[curCity][i]),beta)*pow((Map.m_dTrial[curCity][i]),alpha);
}
}
double sel=0;
for (i=0;i<iCityCount;i++) {
if((AllowedCity[i]==1))
{
prob[i]=pow((1.0/Map.distance[curCity][i]),(int)beta)*pow((Map.m_dTrial[curCity][i]),(int)alpha)/temp;
sel+=prob[i];
}
else
prob[i]=0;
}
double mRate=rnd(0,sel);
double mSelect=0;
for ( i=0;i<iCityCount;i++) {
if((AllowedCity[i]==1))
mSelect+=prob[i] ;
if (mSelect>=mRate) {j=i;break;}
}
if (j==10000)
{
temp=-1;
for (i=0;i<iCityCount;i++) {
if((AllowedCity[i]==1))
if (temp) {
temp=pow((1.0/Map.distance[curCity][i]),beta)*pow((double)(Map.m_dTrial[curCity][i]),alpha);
j=i;
}
}
}
return j;
}
void ant::UpdateResult()
{
// Update the length of tour
int i;
for(i=0;i<iCityCount-1;i++)
m_dLength+=Map.distance[tabu[i]][tabu[i+1]];
m_dLength+=Map.distance[tabu[iCityCount-1]][tabu[0]];
}
void ant::move()
{
//the ant move to next town and add town ID to tabu.
int j;
j=ChooseNextCity();
addcity(j);
}
class project
{
public:
void UpdateTrial();
double m_dLength;
void initmap();
ant ants[iAntCount];
void GetAnt();
void StartSearch();
project();
};
void project::UpdateTrial()
{
//calculate the changes of trial information
int i;
int j;
for(i=0;i<iAntCount;i++) {
for (j=0;j<iCityCount-1;j++)
{
Map.m_dDeltTrial[ants[i].tabu[j]][ants[i].tabu[j+1]]+=Q/ants[i].m_dLength ;
Map.m_dDeltTrial[ants[i].tabu[j+1]][ants[i].tabu[j]]+=Q/ants[i].m_dLength;
}
Map.m_dDeltTrial[ants[i].tabu[iCityCount-1]][ants[i].tabu[0]]+=Q/ants[i].m_dLength;
Map.m_dDeltTrial[ants[i].tabu[0]][ants[i].tabu[iCityCount-1]]+=Q/ants[i].m_dLength;
}
for (i=0;i<iCityCount;i++) {
for (j=0;j<iCityCount;j++)
{
Map.m_dTrial[i][j]=(rou*Map.m_dTrial[i][j]+Map.m_dDeltTrial[i][j] );
Map.m_dDeltTrial[i][j]=0;
}
}
}
void project::initmap()
{
int i;
int j;
for(i=0;i<iCityCount;i++)
for (j=0;j<iCityCount;j++)
{
Map.m_dTrial[i][j]=1;
Map.m_dDeltTrial[i][j]=0;
}
}
project::project()
{
//initial map,read map infomation from file . et.
initmap();
m_dLength=10e9;
ifstream in("eil51.tsp");
struct city
{
int num;
int x;
int y;
}cc[iCityCount];
for (int i=0;i<iCityCount;i++)
{
in>>cc[i].num>>cc[i].x>>cc[i].y;
besttour[i]=0;
}
int j;
for(int i=0;i<iCityCount;i++)
for (j=0;j<iCityCount;j++)
{
{
Map.distance[i][j]=sqrt(pow((double)(cc[i].x-cc[j].x),2)+pow((double)(cc[i].y-cc[j].y),2));
}
}
}
void project::GetAnt()
{
//randomly put ant into map
int i=0;
int city;
srand( (unsigned)time( NULL ) +rand());
for (i=0;i<iAntCount;i++)
{
city=rnd(iCityCount);
ants[i].addcity(city);
}
}
void project::StartSearch()
{
//begin to find best solution
int max=0;//every ant tours times
int i;
int j;
double temp;
int temptour[iCityCount];
while (max<iItCount)
{
for(j=0;j<iAntCount;j++)
{
for (i=0;i<iCityCount-1;i++)
ants[j].move();
}
for(j=0;j<iAntCount;j++)
{ ants[j].move2last();
ants[j].UpdateResult ();
}
//find out the best solution of the step and put it into temp
int t;
temp=ants[0].m_dLength;
for (t=0;t<iCityCount;t++)
temptour[t]=ants[0].tabu[t];
for(j=0;j<iAntCount;j++)
{
if (temp>ants[j].m_dLength) {
temp=ants[j].m_dLength;
for ( t=0;t<iCityCount;t++)
temptour[t]=ants[j].tabu[t];
}
}
if(temp<m_dLength){
m_dLength=temp;
for ( t=0;t<iCityCount;t++)
besttour[t]=temptour[t];
}
printf("%d : %f\n",max,m_dLength);
UpdateTrial();
for(j=0;j<iAntCount;j++)
ants[j].Clear();
max++;
}
printf("The shortest toure is : %f\n",m_dLength);
for ( int t=0;t<iCityCount;t++)
printf(" %d ",besttour[t]);
}
int main()
{
project TSP;
TSP.GetAnt();
TSP.StartSearch();
return 0;
}
‘贰’ 使用可eil 51 时 出现file has been changed outside the editor, reload 怎么办
意思就是在keil外还有其他软件修改了keil工程里的文件,比如你同时开了keil和ultraedit,在UE
里编辑了代码,然后keil编译就会出提示。
如果你确定keil外部的修改正确就reload。
要避免出现的话就不要两个编辑软件同时打开同一个文件
‘叁’ 为什么有的人你告诉他有资源,或者说答应帮他找,前提是也有可能找不到,找不到别骂人,他都不相信呢
EXPLORER.EXE出错解决方法大全!
进程文件: explorer or explorer.exe
进程名称: Microsoft Windows Explorer
进程类别:其他进程
explorer.exe是Windows程序管理器或者Windows资源管理器,它用于管理Windows图形壳,包括开始菜单、任务栏、桌面和文件管理。删除该程序会导致Windows图形界面无法适用。注意:explorer.exe也有可能是w32.Codered和w32.mydoom.b@mm病毒。该病毒通过eil邮件传播,当你打开病毒发送的附件时,即被感染。该病毒会在受害者机器上建立TP服务。该病毒允许攻击者访问你的计算机、窃取和个人数据。该进程的安全等级是建议删除。
出品者:Microsoft Corp.
属于:Microsoft Windows Operating System
系统进程:Yes
后台程序:No
网络相关:Yes
常见错误:N/A
内存使用:N/A
安全等级 (0-5): 0
间谍软件:No
软件:No
病毒:No
木马:No
Explorer.exe程序在系统中的作用
凡是Windows系列的操作系统,运行时都会启动一个名为Explorer.exe的进程。这个进程主要负责显示系统桌面上的图标以及任务栏,它在不同的系统中有不同的妙用。
Windows 9x中的应用
在Windows 9x中,这个进程是运行系统时所必需的。如果用“结束任务”的方法来结束Explorer.exe进程,系统就会刷新桌面,并更新注册表。所以,我们也可以利用此方法来快速更新注册表。方法如下:
按下Ctrl+Alt+Del组合键,出现“结束任务”对话框。在该对话框中选择“Explorer”选项,然后单击“结束任务”按钮,将出现“关闭Windows”对话框。单击“否”按钮,系统过一会儿将出现另一个对话框,告诉你该程序没有响应,询问是否结束任务。单击“结束任务”按钮,则更新注册表并返回Windows 9x系统环境中。这比起烦琐的重新启动过程要方便多了?
Windows /XP中的应用
在Windows /XP和其他Windows NT内核的系统中,Explorer.exe进程并不是系统运行时所必需的,所以可以用任务管理器来结束它,并不影响系统的正常工作。打开你需要运行的程序,如记事本。然后右击任务栏,选择“任务管理器”,选中“进程”选项卡,在窗口中选择Explorer.exe进程,单击“结束进程”按钮,,接下来桌面上除了壁纸(活动桌面Active Desktop的壁纸除外),所有图标和任务栏都消失了。此时你仍可以像平常一样操作一切软件。
如果你想运行其他软件,但此时桌面上空无一物,怎么办?别着急,下面有两种可以巧妙地打开其他软件:
第一种方法:按下Ctrl+Alt+Del组合键,出现“Windows安全”对话框,单击“任务管理器”按钮(或是直接按下Ctrl+Shift+Esc组合键),在任务管理器窗口中选中“应用程序”选项卡,单击“新任务”,在弹出的“创建新任务”的对话框中,输入你想要打开的软件的路径和名称即可。
你还可以在正在运行的软件上,选择“文件→打开”,在“打开”对话框中,点击“文件类型”下拉列表,选择“所有文件”,再浏览到你想打开的软件,右击它,在快捷菜单中选择“打开”命令,就可以启动你需要的软件了。注意,此时不能够通过单击“打开”按钮来打开软件,此种方法适用于大多数软件,Office系列除外。
通过结束Explorer.exe进程,还可以减少KB左右的系统已使用内存,无疑会加快系统的运行速度,为资源紧张的用户腾出了宝贵的空间。
提示:重新启动Explorer.exe进程后,有些软件在任务栏系统托盘的小图标会消息,但该软件还是在正常运行当中。如果觉得有些不方便,可以再次打开该软件来显示小图标。
explorer.exe出错的几种可能原因:
1.系统资源不足。如果机器配置低的话建议不要同时开启太多应用程序。另外可适当加大虚拟内存,特别是经常玩大型游戏。这种情况下升级机器是最根本的解决办法呵呵。
2.系统文件损坏。检查explorer.exe的文件大小,正常情况下应该显示为k或者k,如果大小不一致,可运行sfc/scannow扫描系统文件。若explorer.exe程序本身损坏,可以从别的机器上拷贝一个explorer.exe文件到本机,调用任务管理器,接入explorer.exe进程,然后新建任务拷贝新的文件到系统盘\WINNT()或\WINDOWS(XP)目录下。
3.软件冲突(特别是右键第三方加载项)。譬如输入法,清华紫光输入法3.0版本有的时候会出现explorer.exe出错,取消清华紫光输入法,用其他输入法输入会没有问题。清华紫光输入法4.0版本未发现类似问题。苹果美化版的rar惹的祸,把它卸载了暂时就没有这个错误了,你也可以看是不是安装了苹果美化版的rar,有的话,也可以卸载了来看一下。
装了酒精%或者酒精52%虚拟光驱,在番茄 的系统中很容易出现explorer.exe错误。卸载有时候会解决问题 。
4.病毒。(wc98pp.dll)
网络协议处理器 - 电子书编译工具Web Compiler相关。
wc98pp.dll文件本身并没有影响,很多计算机上都有此文件,但是当explorer.exe出错的时候,删除此文件可以解决问题,然后从注册表中搜索相关键值删除。
usign.dll,有人提到这个文件与wc98pp.dll两个文件类似,删除这两个文件可以清除IE中不断跳出小。在的计算机中未发现此文件。
5.windows升级造成的
大家都知道我们用的是盗版xp,既然是盗版的,肯定会出现各种各样的错误.微软也不是,肯定会搞一些问题来惩罚我们,所以建议大家不要上网自动更新,并且把自动更新关掉(实际上这个更新没p用)
6.系统内核错误。此类情况暂时无法解决,重新安装系统。
7.内存问题。有人通过更换内存,解决了这个问题,所以这应该是个原因,不过如果这个出问题就比较麻烦了,所以先考虑前面几个原因。
8.其他原因。计算机运行某个程序等待时间过长,比如读取数据,尤其是光盘或者外界设备的数据的时候,也会出现explorer.exe出错。
exeplorer.exe是系统的外壳。这个文件因为开机就被加载到内寸中。所以这个文件通常不会损坏。发生错误是因为注册表的中与exeplorer关联的项发生异常。原因很多,不好查找。所以一般只有重新安装系统。如果嫌麻烦,使用启动盘启动系统,在恢复控制台中修复
‘肆’ 经济阈值与现代植物病害防治是怎么样的
经济阈值(economicthreshold,简称ET)是指病害合理防治时机的一种病害密度指标。即病害的某一密度(病情),达此密度时应该采取控制措施,以防止病害种群密度增加而达到经济损害水平。它是由经济损害水平派生的,最早由美国昆虫学家斯特恩(V.M.Stern,1959)在防治害虫的研究中与经济损害水平一起提出来的。荷兰扎多克斯(J.C.Zadoks)在植物病害研究中使用行动阈值(actionthreshold)与之对应。中国通常采用防治指标这一术语。
由于黑德利(J.C.Headly,1972,1982)提出的“经济阈值”恰好是斯特恩(1959)定义的经济损害水平(economicinjurylevel,简称EIL),在以后的许多引述和解释中常把二者混淆。所谓经济损失是指防治费用与防治挽回损失金额的差值。针对预计流行后病情可能达到EIL的病害,如果进行防治,其收益正好等于所需防治费用。它是有害生物综合防治(IPC)或有害生物综合治理(IPM)理论的重要概念,是从经济效益出发确定的病害系统管理目标。EIL是权衡一场预计发生的病害在经济上是否值得防治的指标和为了取得最好的经济效益而控制病害的最佳密度。ET则是为了达到上述目的而采取防治行动时的病害密度。在虫害防治中,ET通常小于EIL,但是在使用高效杀虫剂能立即杀死害虫,制止其危害时,ET可能等于EIL。
众所周知,有害生物对农林作物造成了很大损失,但这种损失用货币折算到底有多大,目前国内外尚无统一的标准。特别是化学防治是治理有害生物的重要手段,在杀死害虫、消灭病菌、杂草、提高农林作物产量取得经济效益的同时,又引起生态恶化、环境污染等生态学负效应。这些负效应如何来定性、定量评价,至今也没有统一标准,而此前的评价大都停留在定性的水准上,尤其是缺少对生态学负效应的定量评价。经济阈值模型对生态调节参数选择随意性大,且没有统一标准,对农药的生态学负效应分析模糊甚至不加以考虑。根据经济学原理,单纯地以种植经营者的利益而言,他们肯定希望自己的有形投入费用(visiblecost,简称Cv)小于最后所出售的作物的总收入,即投入小于产出(通常所说的投入产出比以经济学原理为单一着眼点,且以种植者的利益为单一准线),这样才算有利可图,自己的劳动力价值也得到了体现。然而,由于大量使用农药,产生了严重生态学负效应,而生态恶化和环境污染又是生态环境保护者和政府决策者所需解决的问题。
因此万年峰等提出了可持续阈值的定义:“当生态环境保护者、政府决策者与种植经营者的利益持平时,种植者通过使用农药及各种管理手段所挽回的经济损失与作物管理手段的经济消耗和农药区域污染所引起的生态学负效应,折算成经济损失的货币表现相等时的特定时空内栽培作物遭受的害虫密度”。与经济阈值的特征比较,可持续阈值主要表现在其学科思想是经济学、生态环境学和生态哲学,注意到任何手段、措施作用的对象都是社会一经济一生态复合系统;决策目标是农林业可持续发展,人与自然的和谐发展,而不只是“就有害生物论和有害生物”;决策对象综观整个农林生态系统,甚至全球系统,关注生态学负效应评价,而不只是控制有害生物;决策主体是科研人员、种植经营者、政府决策者,需要的是各部门、单位的分工协作,而不只是科研人员的“独立舞台”;评价手段趋向于定性、定量且多元化;研究方法从局部控制到区域调控,从近期考虑到长期决策、系统决策;收益对象是种植经营者、环保人士和政府决策者三方。
‘伍’ 求数电模电单片机仿真软件 QQ359566900
Multisim10.0支持单片机仿真!我不支持使用,不好用!!单片机仿真用Proteus其程序的编译用K eil.模数坊真用Multisim10.0仿真较好!!当然!!Proteus也可以!1
‘陆’ k'eil在哪儿查看编译后的警告信息
VS2008菜单 project --> xxx(工程名) Properties... 进去以后 configuration properties --> c/c++ --> advanced disable specific warnings栏填入警告的编号,sprintf好像是4996。 如果要屏蔽多个警告,就把它们编号用逗号分隔~
‘柒’ keil5多大
因为KEIL是可以装在一起的,我装了KEIL2,KEIL3,KEIL4,对应的核心包括了C51和C251,目前总共大小是162M
_eil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
‘捌’ VS 2010中,除了注释,没有没专门的功能让一段代码暂时无效~
你好:) 使用“条件编译” //#define TEST //定义一个调试的条件编译变量 using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Data; using System.Threading; using System.Data.Objects; using System.IO; using System.Xml.Linq; using System.Xml; namespace TestBed { public class MainTest { public static void Main() { #if TEST DataTable dt = new DataTable(); dt.Columns.Add("id", typeof(string)); dt.Columns.Add("asgn_id", typeof(string)); dt.Rows.Add("206347", "1430EH"); dt.Rows.Add("206350", "1430EH"); dt.Rows.Add("206366", "1430EH"); DataTable dt2 = new DataTable(); dt2.Columns.Add("man", typeof(string)); dt2.Columns.Add("unit", typeof(string)); dt2.Columns.Add("job_id", typeof(string)); dt2.Rows.Add("Cortez Peter A","573","206347"); dt2.Rows.Add("Dobrik Mark J","573", "206350"); dt2.Rows.Add("Eilken Russell S","573", "206366"); var result = from e in dt.AsEnumerable() group e by e["asgn_id"].ToString() into temp select new { AsgnId = temp.Key, Workers = from d in temp join f in dt2.AsEnumerable() on d["id"].ToString() equals f["job_id"].ToString() select new { Name = f["man"].ToString(), Unit = f["unit"].ToString() } }; XmlDocument doc = new XmlDocument(); XmlElement root = doc.CreateElement("root"); doc.AppendChild(root); foreach (var item in result) { XmlElement ele = doc.CreateElement("job"); XmlAttribute attr1 = doc.CreateAttribute("asgn_id"); attr1.Value = item.AsgnId; XmlAttribute attr2 = doc.CreateAttribute("unit"); attr2.Value = item.Workers.First().Unit; ele.Attributes.Append(attr1); ele.Attributes.Append(attr2); foreach (var worker in item.Workers) { XmlElement w = doc.CreateElement("crew"); XmlAttribute attr = doc.CreateAttribute("man"); attr.Value = worker.Name; w.Attributes.Append(attr); ele.AppendChild(w); } root.AppendChild(ele); } doc.Save("C:\\try.xml"); Console.WriteLine("OK"); } #endif } } } 注意:我把#define这部分注释掉,那么整个一段代码就无法执行(因为#if Test的Test没有定义过))。结论:你可以使用“#if XXX“来框住所需要的代码。然后注释掉#define XXX的部分,这样凡是在框中的代码都不执行。请自行比较结果。另外(点击, http://msdn.microsoft.com/zh-cn/library/4y6tbswk.aspx ,参考)。
‘玖’ 易语言编译错误,求解
代码从加入图片以后都是错的、加入图片(如果这里是图片组,这里应该是整数型数据你写的是个子节集)另外这种编程问题没分不会有多少人会告诉你的/流汗