程序循环出现问题,哪位大神帮忙看看
以下程序,当将两个循环部分注释起来的时候,可以运行出来结果,如果加上循环,运行页面一直运行不出结果,这个部分的循环次数也不是特别多,次数一共是50*100*100*100次,程序还有一个地方也有一样的程序,有10000*1000次循环(这两个地方的循环式相加的关系),但是那里就没有问题。while(temp1>0.3) //温度下降50次就可以达到这个温度
{
while(num1<=100)
{
for(j=0;j<N;j++)
{
do
{
i=rand()%N; //改变活动的执行模式
if(Mode[i]>1)
MList[i]^=1;
ELstart();
}while(es[j]>ls[j]);
}
for(i=0;i<N;i++)
{
s[i]=es[i];
f[i]=d[i];
}
payactivity_orderly();
NPV_calculate();
NPV1=NPV; //计算净现金现值
while(temp2>0.026) //温度下降100次
{
while(num2<=100)
{
do
{
i=1+rand()%(N-1); //在[1,N-1]中随机选择一个活动
s[i]=es[i]+1+rand()%(ls[i]-es[i]); //在活动的事件窗(es[],ls[]]中随机选择一个时间作为开始时间
for(j=i+1;j<N;j++)
{
int max=0;
for(k=i;k<N;k++)
{
if(network[k][j]==1&&s[k]+d[k]>max)
max=s[k]+d[k];
}
s[j]=max;
}
for(j=0;j<N;j++)
{
if(s[j]<es[j])
s[j]=es[j];
f[j]=s[j]+d[j];
}
}while(f[N-1]<deadline1||f[N-1]>deadline2);
payactivity_orderly();
NPV_calculate();
NPV2=NPV;
if(NPV2-NPV1>0)
{
for(i=0;i<N;i++)
s_curr[i]=s[i];
NPV1=NPV2;
}
else
{
double r=exp((NPV2-NPV1)/temp2);
double R=(double)(rand()%1001)/1000;
if(R<=r)
{
for(i=0;i<N;i++)
s_curr[i]=s[i];
NPV1=NPV2;
}
}
num2++;
}
temp2=temp2*cool_rate;
}
if(NPV1-NPV0>0)
{
for(i=0;i<N;i++)
MList_curr[i]=MList[i];
NPV0=NPV1;
}
else
{
double r=exp(NPV1-NPV0)/temp1;
double R=(double)(rand()%1001)/1000;
if(R<=r)
{
for(i=0;i<N;i++)
MList_curr[i]=MList[i];
NPV0=NPV1;
}
}
num1++;
}
temp1=temp1*cool_rate1;
}