静态多路径分配模型程序源代码(C++程序)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

静态多路径分配模型程序源代码

#include

#include

#include

const int maxnum=100;

const double maxint=99999;

double dist1[maxnum],dist2[maxnum];

int prev1[maxnum],prev2[maxnum];

double c[maxnum][maxnum];

double b[maxnum][maxnum],w[maxnum][maxnum];

float v[maxnum][maxnum];

int n,line,r,s,Q;

void Dijkstra(int n,int v,double *dist,int *prev,double c[maxnum][maxnum]) {

bool s[maxnum];

for(int i=1;i<=n;++i)

{

dist[i]=c[v][i];

s[i]=0;

if(dist[i]==maxint)

prev[i]=0;

else

prev[i]=v;

}

dist[v]=0;

s[v]=1;

for(i=2;i<=n;++i)

{

double tmp=maxint;

int u=v;

for(int j=1;j<=n;++j)

if((!s[j])&&dist[j]

{

u=j;

tmp=dist[j];

}

s[u]=1;

for(j=1;j<=n;++j)

if((!s[j])&&c[u][j]

{

double newdist=dist[u]+c[u][j];

if(newdist

{

dist[j]=newdist;

prev[j]=u;

}

}

}

}

void searchPath(int *prev,int v,int u)

{

int que[maxnum];

int tot=1;

que[tot]=u;

tot++;

int tmp=prev[u];

while(tmp!=v)

{

que[tot]=tmp;

tot++;

tmp=prev[tmp];

}

que[tot]=v;

for(int i=tot;i>=1;--i)

if(i != 1)

cout< ";

else

cout<

}

void siranzhi(int n,double *dist1,double *dist2,double c[maxnum][maxnum],double b[maxnum][maxnum])

{

for(int i=1;i<=n;++i)

for(int j=1;j<=n;++j)

if(c[i][j]!=maxint)

if(dist1[i]dist2[j])

b[i][j]=exp((dist1[j]-dist1[i]-c[i][j]));

else b[i][j]=0;

for(i=1;i<=n;++i)

for(int j=1;j<=n;++j)

if(c[i][j]!=maxint)

if((dist1[i]>=dist1[j]||dist2[i]<=dist2[j])&&b[j][i]>0)

b[i][j]=maxint;

}

void quanzhong(int n,double *dist,int r,double b[maxnum][maxnum],double w[maxnum][maxnum])

{

bool t[maxnum];

for(int i=1;i<=n;++i)

t[i]=0;

for(int m=1;m

{

int u=r;

double tmp=maxint;

for(int j=1;j<=n;++j)

{

if((t[j]==0)&&(dist[j]

{

u=j;

tmp=dist[j];

}

}

t[u]=1;

j=1;

while(j<=9)

{

if(b[u][j]!=maxint)

{

if(u==r)

{

w[u][j]=b[u][j];

}

else

{

double x=0;

for(i=1;i<=n;++i)

{

if((w[i][u]!=maxint)&&(b[i][u]!=maxint))

{

x+=w[i][u];

}

}

w[u][j]=b[u][j]*x;

}

}

j++;

}

}

相关文档
最新文档