所在位置:主页 > 程序语言 > 数学建模中的C语言编程

数学建模中的C语言编程

发布时间:2024-01-09 17:51来源:www.sf1369.com作者:宇宇

一、数学建模中的C语言编程

这个问题的前提条件不明确,本人试着给出一种方法的描述,该回答基于下述假设:

1、n个工件是同时到达的;

2、任意工件可以任意机器上加工;

3、已知工件的加工时间;

基本思想:

采用短工作优先算法,从而使总加工时间最少。

该算法的详细说明可以参考任何一本《操作系统原理》

解法步骤:

1、将工件按加工时间排序,需要时间最少的排在最前;

2、设置一个M大小的数组U,表示各机器已用时间;

3、设置一个M大小的数组N,表示各机器加工当前工件还需要的时间;

4、设置一个M大小的数组R,表示各机器已运行的时间;

4、将数组U、R、N的各元素都置为0;

5、对工件数据中每个元素执行下述操作:

从数组N中找到值最小的元素x;

将数组N中每个元素的值减去元素x的值作为其新值;

将数组R中每个元素的值加上元素x的值为作其新值;

将元素x值设置为工件要求的加工时间;

修改数组U中的值:U[x]+=R[x]+N[x];

6、将数组U中各元素的值求和,得到的即为最短的总时间

祝你好运!

-------------------------------------------------------

程序用JAVA语言编写,并省略了排序操作,并假定机器数为3

public static void main(String[] arg)throws Exception

{

int[] W=new int[]{1,2,3,55,56,77,77,88,99,100};//工件需要的工作时间

int[] U=new int[]{0,0,0};//各机器加工的工件已用的总时间,含等待时间

int[] R=new int[]{0,0,0};//各机器已运行的时间

int[] N=new int[]{0,0,0};//各机器加工完当前工作需要的时间

for(int i=0;i<W.length;i++)

{

/**找到当前机器中最早可用的机器,用m表示机器的代号,x表示机器完成当前工作需要的时间*/

int m=0;

for(int j=1;j<N.length;j++)if(N[j]<N[m])m=j;

int x=N[m];

//将数组N中每个元素的值减去元素x的值作为其新值;

//将数组R中每个元素的值加上元素x的值为作其新值;

for(int j=0;j<N.length;j++)

{

N[j]-=x;

R[j]+=x;

}

//将元素x(即机器m)值设置为工件要求的加工时间;

N[m]=W[i];

U[m]+=(R[m]+N[m]);

}

int total=0;

for(int i=0;i<U.length;i++)total+=U[i];

System.out.println(总时间等于:+total);

}

二、matlab与数学建模的关系

数学建模要利用matalb计算一些东西 编写一些程序

三个人中要有一个人对matalb比较熟悉,熟练的编写程序

最重要的还是要有想法 才可以熟练编写程序

三、数学建模编程不学C语言只学MATLAB行吗

当然可以。为什么要学C

四、acm与数学建模

首先我感觉数学建模训练是必要的,但是意识更重要,若想在数学建模上取得成绩,必须在生活中多留心那些能够建模的问题,培养建模的意识,我是一个大三的数学系学生,计算机竞赛虽然没有参加过,但是我可以说数学建模的思想绝对与计算机思想有着密切的联系,推荐提前学习MATLAB的使用,不要仅局限在课本上的那些程序,厚积然后勃发!建议你在数学建模中扮演编程角色,这是最适合你的角色。

推荐书目:数学模型(第三版) 姜启源 叶俊 编(我们学校的官方教程,在山东很有地位)

推荐软件:matlab / spss