运筹学课设java代码,运筹学专业课代码

谁帮忙给个运筹学任务指派问题的JAVA算法阿!不需要C或者C++语言,也不要和我说看着C++就能改,我不会改!!!!!

public class AssignWorkProblem {

创新互联是一家专注于做网站、成都网站制作与策划设计,翁源网站建设哪家好?创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:翁源等地区。翁源做网站价格咨询:13518219792

public static void main(String[] args) {

/*

*测试

**/

int[][] cost=new int[][]{{2,15,13,4},{10,4,14,15},{9,14,16,13},{7,8,11,9}};

System.out.println(Arrays.toString(awpProcedure(cost, 4, 4)));

cost=new int[][]{{12,7,9,7,9},{8,9,6,6,6},{7,17,12,14,12},{15,14,6,6,10},{4,10,7,10,6}};

System.out.println(Arrays.toString(awpProcedure(cost, 5, 5)));

}

/*

* 费用矩阵costMatrix,由于要改变costMatrix的值,clone方法只能对基本类型;

* pnum即为几个人,也是costMatrix的行数,wnum是几个任务,也是costMatrix的列数

* 返回值:没两个数字为一组,表示i,j。如返回[1,1,2,0]表示costMatrix[1][1]、costMatrix[2][0]费用最低

*/

public static int[] awpProcedure(int[][] costMatrix,int pnum,int wnum){

if(pnum1||pnumwnum)

return null; //test n=m

int[][] costC=new int[pnum][]; //clone 一份costMatrix

for(int i=0;ipnum;i++){

costC[i]=costMatrix[i].clone();

}

//每行减去最小的元素

int[] lzeroa=new int[pnum+1]; //记录每行0的个数,lzero[pnum]记录0最少的行标

lzeroa[pnum]=-1;

int i,j;

for(i=0;ipnum;i++){

int lmin=costC[i][0]; //记录每行最小的

for(j=1;jwnum;j++)

lmin=lmincostC[i][j]?costC[i][j]:lmin;

for(j=0;jwnum;j++){

costC[i][j]-=lmin;

lzeroa[i]+=costC[i][j]==0?1:0;

}

}

for(j=0;jwnum;j++){

int cmin=costC[0][j]; //记录每列最小的

for(i=1;ipnum;i++)

cmin=cmincostC[i][j]?costC[i][j]:cmin;

if(cmin==0)continue;

for(i=0;ipnum;i++){

costC[i][j]-=cmin;

lzeroa[i]+=costC[i][j]==0?1:0;

}

}

int[] rzerop;

int whilenum=0;

while(true){

boolean[] lzerob=new boolean[pnum]; //记录某行是否查找过

rzerop=new int[pnum*2]; //记录0元素所在的行列

Arrays.fill(rzerop, -1);

if(awpIsSolution(costC,pnum,wnum,lzeroa.clone(),lzerob,rzerop))

break;

//下面调整矩阵

int[] coverLC=new int[pnum+wnum]; //要被标记的行列,0-pnum-1为行,pnum以后为列

Arrays.fill(coverLC, -1);

//没有找到合适0元素的行做标记

for(i=0;ipnum;i++)

if(lzerob[i]==false)coverLC[i]=i;

//对已经标记的行上的0元素所在的列做标记

for(i=0;ipnum;i++)

if(coverLC[i]!=-1){

for(j=0;jwnum;j++){

if(costC[coverLC[i]][j]==0)

coverLC[pnum+j]=j;

}

}

//对已经标记的列上的已经选中的0元素所在的行做标记

for(j=0;jwnum;j++){

if(coverLC[pnum+j]!=-1){

for(i=0;irzerop.lengthrzerop[i]!=-1;i+=2){

if(rzerop[i+1]==j)

coverLC[rzerop[i]]=rzerop[i];

}

}

}

//确定能找出新最小值的区域,直线覆盖掉没有打勾的行,打勾的列,最终coverLC[x]!=-1就是能选择的数

for(i=0;iwnum;i++){

if(coverLC[pnum+i]!=-1)coverLC[pnum+i]=-1;

else coverLC[pnum+i]=i;

}

//从区域中找出最小元素

int nmin=-1;

for(i=0;ipnum;i++){

if(coverLC[i]==-1)continue;

for(j=0;jwnum;j++){

if(coverLC[pnum+j]==-1)continue;

if(nmin==-1)nmin=costC[i][j];

else nmin=nmincostC[i][j]?costC[i][j]:nmin;

}

}

//打勾的列加上nmin,打勾的行减去nmin,记录0个数的数组作相应变化

for(j=0;jwnum;j++){

if(coverLC[pnum+j]==-1){

for(i=0;ipnum;i++){

if(costC[i][j]==0)lzeroa[i]-=1;

costC[i][j]+=nmin;

}

}

}

for(i=0;ipnum;i++){

if(coverLC[i]!=-1){

for(j=0;jwnum;j++){

costC[i][j]-=nmin;

if(costC[i][j]==0)lzeroa[i]+=1;

}

}

}

whilenum++;

if(whilenum==100){

System.out.println("100次之内矩阵调整没有找到");

return null;

}

}

return rzerop;

}

/*

* 测试矩阵costC是否有解,已经通过变换或者调整得到的矩阵

*/

public static boolean awpIsSolution(int[][] costC,int pnum,int wnum,int[] lzeroa,boolean[] lzerob,int[] rzerop){

int i,j,rzeropi=0;

for(int p=0;ppnum;p++){ //开始按照匈牙利法划去0所在的行列

//查找0元素个数最少的行

for(i=0;ipnum;i++){

if(lzerob[i]||lzeroa[i]1)continue; //如果某行已经查找过或者没有0元素,可能被划去了

if(lzeroa[pnum]!=-1lzeroa[i]lzeroa[lzeroa[pnum]])lzeroa[pnum]=i;

else if(lzeroa[pnum]==-1) lzeroa[pnum]=i;

}

//没有找到足够的不在同一行同一列的0元素,需要对矩阵进行调整,如果lzeroa[pnum]有值,则说明该行一定能找到

if(lzeroa[pnum]==-1){

return false;

}

//划去找到的行中没有被覆盖的0元素所在的行列

for(j=0;jwnum;j++){

if(costC[lzeroa[pnum]][j]!=0)continue;

//第一次找0元素最少的行

if(rzeropi==0){

rzerop[rzeropi++]=lzeroa[pnum];

rzerop[rzeropi++]=j;

lzerob[lzeroa[pnum]]=true; //找到第lzeroa[pnum]行,第j列0元素

//划去所在的行列时 lzeroa做相应的变化

for(i=0;ipnum;i++){

if(i!=lzeroa[pnum]costC[i][j]==0)

lzeroa[i]-=1;

}

lzeroa[pnum]=-1;

break;

}

//找到的0元素是否被划去

for(i=0;irzeropi(lzeroa[pnum]!=rzerop[i]j!=rzerop[i+1]);i+=2);

//如果被划去则找该行下一个0元素

if(irzeropi)continue;

rzerop[rzeropi++]=lzeroa[pnum];

rzerop[rzeropi++]=j;

lzerob[lzeroa[pnum]]=true;

for(i=0;ipnum;i++){

if(i!=lzeroa[pnum]costC[i][j]==0)

lzeroa[i]-=1;

}

lzeroa[pnum]=-1;

break;

}

}

return true;

}

}

求运筹学视频 !急 感激不尽 在线等!

运筹学|运筹学真题解析|清华大学运筹学  

链接:  

?pwd=a3dh 提取码: a3dh

运筹学|运筹学真题解析|清华大学运筹学百度网盘 

请问谁有2009年4月高等教育自学考试运筹学基础试题的答案的,如有可以发到我的邮箱 xuwenjie_1208@126.com

全国2009年4月高等教育自学考试

运筹学基础试题

课程代码:02375

一、单项选择题(本大题共15小题,每小题1分,共15分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。

1.单纯形法作为一种常用解法,适合于求解线性规划( )

A.多变量模型 B.两变量模型

C.最大化模型 D.最小化模型

2.对科学发展趋势的预测属于( )

A.微观经济预测 B.宏观经济预测

C.科技预测 D.社会预测

3.一般而论,1年内的经济预测属于( )

A.长期预测 B.中期预测

C.短期预测 D.定性预测

4.所谓确定条件下的决策,决策者( )

A.不知道将要面对哪些自然状况

B.知道所面对的部分自然状况

C.面对的只有一种自然状况,即关于未来的状态是完全确定的

D.所面对的是,存在一个以上的自然状况,而决策者不了解其它状态,甚至不完全了解如何把概率(可能性)分配给自然状态

5.可用于风险条件下决策类型的是( )

A.最大最大决策标准 B.最大期望收益值标准

C.最大最小决策标准 D.最小最大遗憾值决策标准

6.在库存管理中,“订货提前期”,亦可称为( )

A.再订货点 B.前置时间

C.前置时间内的需求量 D.经济订货量

7.线性规划的图解法适用于( )

A.只含有一个变量的线性规划问题 B.只含有2~3个变量的线性规划问题

C.含有多个变量的线性规划问题 D.任何情况

8.单纯形法求解时,若求得的基础解满足非负要求,则该基础解为( )

A.可行解 B.最优解

C.特解 D.可行基解

9.在线性规划中,设约束方程的个数为m,变量个数为n,m<n时,可以把变量分为基变量和非基变量两部分,基变量的个数为m个,非基变量的个数为( )

A.m个 B.n个

C.n-m个 D.0个

10.网络计划技术是解决哪类管理问题的科学方法?( )

A.组织生产和进行计划管理 B.环境条件不确定问题

C.具有对抗性局势竞争问题 D.订货与库存问题

11.在网络计划技术中,以结点代表活动,以箭线表示活动之间的先后承接关系,这种图称之为( )

A.箭线式网络图 B.结点式网络图

C.最短路线图 D.最大流量图

12.网络图中,完成一项活动可能最短的时间,称为( )

A.作业时间 B.最乐观时间

C.最保守时间 D.最可能时间

13.在一个网络中,如果从一个起点出发到所有的点,找出一条或几条路线,以使在这样一些路线中所采用的全部支线的总长度最小,这种方法称之为( )

A.点的问题 B.线的问题

C.树的问题 D.最小枝叉树问题

14.任意一个方阵,如果其各行都是概率向量,则该方阵称之为( )

A.固定概率矩阵 B.马尔柯夫向量

C.概率向量 D.概率矩阵

15.反映模拟的不足之处的表述是( )

A.模拟是不精确的,它既不是一个最优化过程,也不能得到一个答案

B.实际观察一个系统可能费用过于昂贵

C.不可能有足够的时间来实际广泛地操作该系统

D.由于难于观察到实际环境,模拟可能是惟一可以利用的方法

二、填空题(本大题共10小题,每小题1分,共10分)

请在每小题的空格中填上正确答案。错填、不填均无分。

16.运筹学是一门研究如何有效地组织和管理________的科学。

17.预测就是对未来的不确定的事件进行________或判断。

18.决策就是针对具有明确目标的决策问题,经过调查研究,根据实际与可能,拟定多个________,然后运用统一的标准,选定最佳(或满意)方案的全过程。

19.库存的作用最基本的一个方面,就是保证工业企业的生产能够正常地、________、均衡地进行。

20.线性规划是一种合理利用资源、合理调配资源的应用数学方法,其基本特点是模型中的目标函数和约束方程都是________。

21.运输问题是线性规划问题中一类具有特殊性质的问题,它通过选择________的运输方案,以达到总的运输费用最低或获得的利润最大等目标。

22.最小枝杈树算法是按把最近的未接点连接到那些________上去的办法来进行的。

23.马尔柯夫研究发现:许多事物未来的发展或演变,往往受该事物________所支配或影响。

24.盈亏平衡分析是一种管理决策工具,它用来说明在________水平上总销量与总成本因素之间的关系。

25.模拟又称________,它的基本思想是构造一个试验的模型,通过对这个模型的运行,获得要研究的系统的必要信息和结果。

三、名词解释题(本大题共5小题,每小题3分,共15分)

26.定性预测

27.后悔值

28.线性规划的目标函数

29.阶石法中的改进指数

30.活动的极限费用

四、计算题Ⅰ (本大题共3小题,每小题5分,共15分)

写出下列每小题的计算过程,否则只给结果分。

31.某木材公司销售房架构件,其中一种构件的销售数据如题31表。试计算:3个月的滑动平均预测值(直接填在表中相应空栏)。

题31表 某木材公司房架构件的销售数据

月份 实际销售额(万元) 3个月滑动平均预测值

1 10

2 12

3 13

4 16

5 19

6 23

32.某唱片公司计划录制一位新歌星的唱片。拟定的价格有A1、A2、A3三个方案,预计唱片进入市场后可能的销售状况(自然状态)也有三种,收益值如题32表。试以最大最大决策标准作出唱片价格的决策选择。

题32表 某唱片公司录制新唱片的收益值表 (单位:元)

33.某公司平均每周需求某配件3900台套,每台套存贮一年费用为6元,每次订货费25元,试求该公司年度最优经济订货批量和全年最佳订货次数。

五、计算题 Ⅱ(本大题共3小题,每小题5分,共15分)

写出下列每小题的计算过程,否则只给结果分。

34.若某工序A由i、j两结点顺序相联,i结点的最早时间为60(小时),j结点的最迟时间为120(小时),工序A本身需要40小时才能完成。试画出该工序的箭线式网络图,并在图上填写出i结点的最迟时间、j结点的最早时间,以及工序A的最早开始和最迟开始时间。

35.某公司拟对新产品生产批量作出决策,现有三种备选方案,未来市场对该产品的需求有两种可能的自然状态N1、N2,收益矩阵如题35表。试画出该问题的决策树,并以决策树法作出最优生产决策。

题35表 某公司新产品生产收益矩阵表 (单位:万元)

36.某公司对过去一年中某种配件的交货时间统计如题36表,试在表中填写出累计概率分布和随机数分布。

题36表 公司交货时间(周)的累计概率分布及随机数分布表

交货时间(周) 频率(%) 累计概率分布(%) 随机数分布

1 23

2 45

3 17

4 9

5 6

六、计算题 Ⅲ(本大题共2小题,每小题7分,共14分)

写出下列每小题的计算过程,否则只给结果分。

37.某企业计划期内要安排生产甲、乙两种产品,有关资源消耗及可获利润如题37表。该厂要获得利润最大化,应如何安排二种产品的生产?建立该问题的线性规划数学模型并用图解法求出最优解。

题37表 某企业产品生产的资源消耗与可获利润表

产品 甲 乙 资源限量

设备台时 1台时/件 1台时/件 300台时

原料A 2千克/件 1千克/件 400千克

原料B 0 1千克/件 250千克

预计获利(元/件) 50 100

38.将题37的线性规划问题转换为标准形式,以原点为基础求出基础可行解,并建立初始单纯形表。

七、计算题Ⅳ(本大题共2小题,每小题8分,共16分)

写出下列每小题的计算过程,否则只给结果分。

39.某工程有7道工序,工序衔接与有关时间数据如题39表,试绘制网络图。

题39表 某工程施工工序资料表

工序名称 A B C D E F G

紧前工序 - - AB AB B C DE

工序时间 2 4 5 4 3 2 4

40.在你为题39所绘制的网络图上标出各结点的时间参数,确定关键路线并用双线(或粗黑线)表示。指明总工期以及A、B、C、D四项活动的最早开始时间。

运筹学,上机课matlab老师给的PPT,线性规划出现的下面语句是什么意思啊?

线性规划出现的下面语句,options=optimoptions('linprog','algorithm','simplex')是什么意思?

首先,我们对这个语句中的各内容进行说明:

optimoptions——是优化选项函数,对于不同的优化函数,其控制内容是略有区别的

linprog——线性规划求解函数名;

algorithm——选择优化算法;系统默认'dual-simplex'(对偶单纯形法算法),'interior-point-legacy'(内点传统算法),它是基于Mehrotra 预测-校正算法 的变体。'interior-point'(内点算法)

simplex——选择单纯形法

所以,这个options优化选项的意思是采用对偶单纯形法算法进行线性规划最优化计算。

运筹学课设:快餐店用功问题求解???(lingo程序怎么写)

根据开始时间分类就行了

model:

sets:

time/1..11/:d;

temp/1..8/:n1;

full/1..3/:n2;

endsets

data:

d=9 9 9 3 3 3 6 12 12 7 7;

enddata

min=@sum(temp:n1);

@sum(full:n2)=4;

@for(temp:@gin(n1));

@for(full:@gin(n2));

@for(time(i):@sum(temp(j)|j#gt#(i-4) #and# j#le#i:n1(j))+@sum(full(k)|k#gt#(i-9) #and# k#ne#(i-4) #and# k#le#i:n2(k))=d(i));

end


当前名称:运筹学课设java代码,运筹学专业课代码
转载源于:http://pwwzsj.com/article/hspicp.html