| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 422 人关注过本帖
标题:程序循环出现问题,哪位大神帮忙看看
只看楼主 加入收藏
凉薯
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-8-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
程序循环出现问题,哪位大神帮忙看看
以下程序,当将两个循环部分注释起来的时候,可以运行出来结果,如果加上循环,运行页面一直运行不出结果,这个部分的循环次数也不是特别多,次数一共是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;
    }
2014-08-19 15:48
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:10 
检查下循环条件.i j n

hl928452957@gmail点com

2014-08-19 18:02
llwwzz
Rank: 2
等 级:论坛游民
帖 子:25
专家分:27
注 册:2012-11-12
收藏
得分:10 
没有仔细看,但是给你点建议,for循环if判断的条件最好都用  !=        ,好判断,执行也快
2014-08-21 22:33
快速回复:程序循环出现问题,哪位大神帮忙看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050228 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved