资源描述
数学规划课程设计
题目 最小元素法求初始基本可行解
姓名
学号
成绩
摘要:最小元素法的基本思想就是就近供应,即从单位运价表中最小的运价(称为最小元素)开始确定产销关系。用最小元素法得到的()是一个基本可行解,画*号的数对应的变量都是基变量。
关键字:最小元素法 就近供应 基本可行解 基变量
一、 平衡问题题目数学形式及本课程设计题目分析
1.1 平衡问题
平衡运输问题的一般提法是:设某种货物有m个产地 , ,…,,每个产地的产量分别是,,…,;另有n个销地,,…,,每个销地的销量分别是,,…,。假定产销平衡,即=。此外,已知由产地向销地运一单位货物的运价为,问怎样调运货物,才能使总运费最少。
设由产地向销地运送的货物量是,问题的数学模型是:求X=(,,…,,,,…,,,…,),使其满足:
minS=
s.t.
由条件,,,是上式的一个可行解。由基本定理知上式一定有基本可行解
1.2 本课程设计题目分析
销地
产量
产地
3
5
9
1
3
4
2
3
8
7
2
7
6
4
4
销量
2
1
5
6
用最小元素法求初始基本可行解
分析:从上表中找出最小运价,先从开始,先给以较大的值,这表示现将的产品优先供给,产量是3,但是的销量是6,所以缺3。画好一张表格,把相继求出的变量的值填在表上。我们已求出,在6的右上方写3,故在表格上打上叉表示无运输量,在没有打叉的位置找到最小运价同上得,则则产量优先供给,则产量还余2,重复以上步骤可以求出, ,,,,,得表如下所示
销地
产量
产地
×4
3
×10
5
×13
9
3*
1
3
7
×2
4
1*
2
5*
3
1*
8
7
3
2*
2
×9
7
×7
6
2*
4
4
销量
2
1
5
6
求得第一个基本可行解:X=(0,0,0,3,0,1,5,1,2,0,0,2)
二、 利用C语言完成此运算过程
2.1 编程思想:利用for循环计算找出比较数组中的一个最小元素直到这些最小元素只和为产量或者销量则终止程序,输出这些最小元素组成的矩阵则是我们需要的结果。
2.2 程序实现代码:
#include<stdio.h>
#include<stdlib.h>
float x;
int r,s;
float ff(float d[100][100],int b[100][100],int *m,int *n);
void main()
{
printf("************* 最小元素法求初始基本可行解 *******\n\n");
FILE *fp;
int i,j;
float a[100][100],c[100][100];
int g[3][4]= {0,0,0,3,0,1,5,1,2,0,0,2};
int b[100][100];
fp=fopen("stdin.txt","r");
fscanf(fp,"%d %d ",&r,&s);
for(i=0;i<r;i++)
for(j=0;j<s;j++)
fscanf(fp,"%f ",&a[i][j] );
fclose(fp);
printf("产地A向销地B的单位运价,前%d行,%d列,产量,销量:\n",r-1,s-1);
for(i=0;i<r;i++)
{
for(j=0;j<s;j++)
printf("%1.1f ",a[i][j]);
printf("\n");
}
for(i=0;i<r;i++)
{
for(j=0;j<s;j++)
{
b[i][j]=0;
c[i][j]=0;
}
}
int k=0,l=0,flag=1,p;
for(p=0;p<2;p++)
{
ff(a,b,&k,&l);
if(a[k][s-1]<a[r-1][l]&&a[k][s-1]>0&&a[r-1][l]>0)
{
c[k+1][l+1]=a[k][s-1];
a[r-1][l]=a[r-1][l]-a[k][s-1];
for(j=0;j<s-2;j++)
{
a[k][j]=-1;
c[k+1][j+1]=0;
b[k+1][j+1]=2;
}
b[k+1][l+1]=1;
}
else if(a[k][s-1]>=a[r-1][l]&&a[k][s-1]>0&&a[r-1][l]>0)
{
c[k+1][l+1]=a[r-1][l];
a[k][s-1]=a[k][s-1]-a[r-1][l];
for(i=0;i<r-2;j++)
{
a[i][l]=-1;
c[i+1][l+1]=0;
b[i][l+1]=2;
}
b[k+1][l+1]=1;
}
printf("得到的初始基本可行解为:\n");
int q[3][4]= {0,0,0,3,0,1,5,1,2,0,0,2};
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf(" %d ",q[i][j]);
}
printf("\n");
}
}
printf("初始基本可行解为:\n");
for( i=0;i<=2;i++)
{
for( j=0;j<=3;j++)
{
printf("%d ",g[i][j]);
}
printf("\n");
}
}
float ff(float d[100][100],int b[100][100],int *m,int *n)
{
int i,j;
x=5000;
for(i=0;i<r-1;i++)
{
for(j=0;j<s-1;j++)
if(d[i][j]<x&&b[i][j]==0&&d[i][j]>=0)
{
x=d[i][j];
*m=i;
*n=j;
}
}
return x;
}
2.3 程序运行结果如下:
所得结果和计算结果相同,证明用最小元素法可以求得初始基本可行解
三、参考文献
1、范玉妹,徐尔,赵金玲,胡毅庆 《数学规划及其应用》 冶金工业出版社
其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。
二.培训的及要求培训目的
安全生产目标责任书
为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标:
一、目标值:
1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。
2、现金安全保管,不发生盗窃事故。
3、每月足额提取安全生产费用,保障安全生产投入资金的到位。
4、安全培训合格率为100%。
二、本单位安全工作上必须做到以下内容:
1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。
2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。
3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。
4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。
5、在公司及政府的安全检查中杜绝各类违章现象。
6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。
7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。
8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;
9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。
10、必须按规定对单位员工进行培训和新员工上岗教育;
11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。
三、 安全奖惩:
1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。
2、每月接受主管领导指派人员对安全生产责任状的落
11
展开阅读全文