网站首页 > 文章中心 > 其它

运筹学课设java代码

作者:小编 更新时间:2023-09-09 18:09:21 浏览量:201人看过

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

public class AssignWorkProblem {

public static void main(String[] args) {

/*

运筹学课设java代码-图1

*测试

**/

}

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

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

*/

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

运筹学课设java代码-图2

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;

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

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

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

if(cmin==0)continue;

costC[i][j]-=cmin;

int[] rzerop;

int whilenum=0;

while(true){

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

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元素所在的列做标记

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

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

coverLC[pnum+j]=j;

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

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

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;

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

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个数的数组作相应变化

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

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

costC[i][j]+=nmin;

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元素个数最少的行

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元素所在的行列

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做相应的变化

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

运筹学课设java代码-图3

lzeroa[i]-=1;

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

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

if(irzeropi)continue;

lzerob[lzeroa[pnum]]=true;

return true;

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

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

链接: ?

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

请问谁有2009年4月高等教育自学考试运筹学基础试题的答案的,如有可以发到我的邮箱 [email protected]/*

运筹学基础试题

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

A.可行解B.最优解

C.特解D.可行基解

A.m个B.n个

C.n-m个D.0个

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第二段:填空题(本大题共10小题,每小题1分,共10分)

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

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

①.10

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

产品甲乙资源限量

工序名称ABCDEFG

紧前工序--ABABBCDE

运筹学,上机课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;

endsets

data:

enddata

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

end

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章