资源简介
运输问题的变量在网络流中是一条弧。据了解国外求几十万变量(弧)规模的最优解实属不易,这里介绍的运输问题算法,对百万弧的规模问题求解易如反掌(比单纯形法快成千上万倍)。
你可以体验算法的速度,观看模拟实际问题的最优解图形等等。
代码片段和文件信息
#include “stdio.h“
#include “math.h“
#include “malloc.h“
#include “stdlib.h“
#include “stddef.h“
#include “time.h “
#include “string.h“
#define NAME fpw“NAME EX_%d.tmp \n“
#define RHS fpw“RHS \n“
#define ROWS fpw“ROWS \n N OBJROW\n“
#define OBJSENSE fpw“OBJSENSE \n MIN \n“
#define OBJSENSEA fpw“OBJSENSE \n MAX \n“
#define COLUMNS fpw“COLUMNS \n“
#define BOUNDS fpw“BOUNDS \n“
#define ENDATA fpw“ENDATA \n“
#define WAREHOUSE_POINT fpw“WAREHOUSE_POINT\n“
#define CUSTOMER_POINT fpw“CUSTOMER_POINT\n“
#define PRECI 2
#define NAMEMAX fpw“SCALE MAX m= %d n= %d name File:%-12s\n“
#define NAMEMIN fpw“SCALE MIN m= %d n= %d name File:%-12s\n“
#define OBJ fpw“OBJ \n“
#define JIANGE 4
double sumtime ;
double myround(doubleint);
main()
{
FILE*fpw ;
int iiiimaxignisumibcmpcmp1 ;
int jssjjkjsumlimmnn ;
double*obj*val*x1*x2*x3*x4v1v2v3u1u2 ;
char zuinb[20]na[20]nc[20];
time_t tta1ttb1 ;
printf(“\n\n 欢迎您!运输问题超级算法演示开始。\n\n“);
printf(“ 通过您的下面回答将自动生成您所需要的规模和数据。 \n“);
printf(“ 您是求运输问题的最小化吗?是-请按字母y并回车,不是-请按字母n并回车。 “);
scanf(“ %c“&zui);
imax=0 ;
if(zui==‘n‘)
imax=1;
printf(“\n 请输入您需要的工厂的总数,并回车“);
scanf(“%ld“&mm);
printf(“\n 请输入您需要的商店的总数,并回车“);
scanf(“%ld“&nn);
printf(“\n 为了产生同结构的不同数据,需要一个随机数的引子。 “);
printf(“\n 请输入一个正整数参数,并回车“);
scanf(“%d“&li);
ib=li ;
printf(“\n 对于需要保存的生成数据您是选择mps格式吗? 是-请按字母y并回车,不是-请按字母n并回车“);
scanf(“%s“na);
cmp=strcmp(“n“na);
cmp1=strcmp(“N“na);
strcpy(nb“EX_“);
itoa(linc10);
strcat(nbnc);
if(cmp!=0&&cmp1!=0)
{
strcpy(nc“.mps“);
strcat(nbnc);
if((fpw=fopen(nb“w“))==NULL)
{
printf(“ Don‘t open the output MPS-format file %s !“nb);
exit(1);
}
}
else
{
strcpy(nc“.txt“);
strcat(nbnc);
if((fpw=fopen(nb“w“))==NULL)
{
printf(“ Don‘t open the output brief-format file %s !“nb);
exit(1);
}
}
isum=mm+nn ;
jsum=mm*nn ;
obj=calloc(jsum+1sizeof(double));
val=calloc(isum+1sizeof(double));
x1=calloc(mm+1sizeof(double));
x2=calloc(mm+1sizeof(double));
x3=calloc(nn+1sizeof(double));
x4=calloc(nn+1sizeof(double));
tta1=time(NULL);
srand(li);
ign=rand()%3 ;
if(ign)
{
if(ign==1)
{
for(i=1;i<=jsum;i++)
{
u1=1+(double)exp(1+fabs(cos(li+5)+sin(8+li*i)))*(double)tan(li+fmod(i10+8*sin(i*li)));
obj[i]=(double)floor(fabs(u1))+1 ;
}
for(jj=1;jj<=mm;jj++)
{
u1=0 ;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 245813 2013-10-27 11:10 随机数据发生器.exe
文件 53248 2013-10-28 09:28 图形展示软件.exe
文件 274483 2013-10-27 08:39 运输问题求解.exe
文件 2613004 2013-10-28 09:19 超级算法介绍.pdf
文件 9103 2013-10-27 11:10 随机数据发生器.c
----------- --------- ---------- ----- ----
3195651 5
评论
共有 条评论