1、java关于单纯形法的课程设计目录第1章 引言 21.1 设计任务 21.2 设计目的 21.3 设计要求 2第2章 主体设计部分 32.1 头文件 32.1.1 头文件代码 32.1.2 截图 42.2 选择命令操作 42.2.1 控制代码 42.2.2 截图 42.3 执行命令操作 52.3.1 操作代码 52.3.2 截图 102.4 换入换出变量的计算 102.4.1 操作代码 102.4.2 截图 112.5 执行计算结果 11第3章 设计总结 11第4章 参考文献 12第5章 附录 12第1章 引言1.1 设计任务 利用所学过的Java知识,结合课程设计实例,编写管理运筹学中的线性
2、规划问题中的单纯形法,让我们更进一步的了解和学习Java知识,对管理运筹学有更深一层次的认识。用Java编程实现单纯形法的基本算法,该算法能够实现指定的线性问题。1.2 设计目的通过此次课程设计,让我们发现此门课程学习中的不足和存在的薄弱环节,予以补充和加强。综合运用在课程学习过程中所学的知识,同时为了实现课程设计的规定成果进行更深入的理论学习和实践拓展。培养独立思考和解决问题的能力,探索和创新的能力。为进一步的学习和深入研究打下基础,培养起做项目的兴趣。1)实现运筹学中线性规划中的单纯形法的基本算法;2)综合应用Java语言,结合数学方法与思路更进一步认识和掌握Java编程语言的风格及应用;
3、3)通过此次设计,希望我们能够在日后的学习和工作中能够更多的使用该门语言,将该门语言作为一门有效地工具运用在实际生活问题中。1.3 设计要求通过简单的Java程序实现单纯形法的最基本解及最优解的求解,过程中实现变量的输入、输出的转化变换,简单明了的代码行间里透露出单纯形法的基本求解步骤,完成最基础的一般性的最小、最大值的求解。1)执行程序后出现个人的基本信息以及即将执行的步骤;2)利用键盘输入的方法实现输入步骤;3)输入之后将即将要解决的单纯性问题在屏幕上显示出来;4)然后根据提示要求进行一步一步的输入操作;5)最后输出计算结果完成操作。第2章 主体设计部分2.1 头文件2.1.1 头文件代码
4、 执行该程序时出现在屏幕上的界面,其下为该界面的设计代码:package 单纯形法;import java.util.Scanner;public class test SuppressWarnings( null ) public static void main(String args) /用Java语言来编一个单纯形法编程算法 /(1)输入和显示数学模型 /(2)进行标准型变换并输出 /(3)单纯形法算法,进行换基迭代,求出基础解(可行解、最优解) /(4)输出解 System.out.println(*交通运输学院 java课程设计*); System.out.println(*专 业
5、 信管1001班*); System.out.println(* 李 凯 201000829 *); System.out.println(* 单纯形法 线行规划问题 *);2.1.2 截图图12.2 选择命令操作2.2.1 控制代码在即将进入操作命令之前的界面:System.out.println(输入数学模型); Scanner s = new Scanner(System.in); System.out.print(目标函数求最大值或最小值(1 or 0):); int m=s.nextInt();2.2.2 截图 图22.3 执行命令操作2.3.1 操作代码利用键盘输入执行指定的线性规
6、划问题:例如 max z = 6+4x2; 满足 System.out.print(有几个决策变量:); int n=s.nextInt(); System.out.print(约束条件中含=号的条件有几个?:); int m2=s.nextInt(); System.out.print(约束条件中含=号的条件有几个? ); int m3=s.nextInt(); /System.out.println(n); int B=new intm1n; int C=new intm2n; int D=new intm3n; int BUM=new intm11; int CUM=new intm21
7、; int DUM=new intm31; /输入目标函数 System.out.println(输入目标函数:); int A=new intn; String SS=new Stringn; Scanner sm = new Scanner(System.in); / for(int i=1;i=0) SSi-1=Ai-1+X+i+; else if(Ai-10) SSi-1=Ai-1+X+i+-; Scanner smm = new Scanner(System.in); System.out.print(X+n+的系数是:); An-1=smm.nextInt(); SSn-1=An-
8、1+X+n; /输出目标函数 for(int i=0;iSS.length;i+) System.out.print(SSi); /输入约束条件中含=号的条件 for(int i=1;i=m1;i+) System.out.println( ); /int B=new intm1n; String MMM=new Stringn; System.out.println(输入第+i+个约束条件中含=号的); for(int j=1;jn;j+) Scanner sN = new Scanner(System.in); System.out.print(X+j+的系数是:); Bi-1j-1=sN
9、.nextInt(); MMMj-1=Bi-1j-1+X+j+; Scanner smmm = new Scanner(System.in); System.out.print(X+n+的系数是:); Bi-1n-1=smmm.nextInt(); /MMMn-1=Nn-1+X+n+=+; /输入常数项 System.out.println(输入常数项:); /int BUM=new intm11; Scanner sNN= new Scanner(System.in); BUMi-10=sNN.nextInt(); MMMn-1=Bi-1n-1+X+n+=+BUMi-10; /输出约束条件中
10、含=号的条件 for(int K=0;K=的条件 for(int i=1;i=号的); for(int j=1;j=+CUMi-10; /输出约束条件中含=号的条件 for(int K=0;KAAA.length;K+) System.out.print(AAAK); /输入约束条件中含=的条件 for(int i=1;i=m3;i+) System.out.println(); /int D=new intm3n; String BBB=new Stringn; System.out.println(输入第+i+个约束条件中含=的); for(int j=1;jn;j+) Scanner B
11、N = new Scanner(System.in); System.out.print(X+j+的系数是:); Di-1j-1=BN.nextInt(); BBBj-1=Di-1j-1+X+j+; Scanner BNN = new Scanner(System.in); System.out.print(X+n+的系数是:); Di-1n-1=BNN.nextInt(); / 输入常数项 System.out.println(输入常数项:); /int DUM=new intm31; Scanner sBBB= new Scanner(System.in); DUMi-10=sBBB.ne
12、xtInt(); BBBn-1=Di-1n-1+X+n+=+DUMi-10; /输出约束条件中含=号的条件 for(int K=0;KBBB.length;K+) System.out.print(BBBK); /参数输入完成! System.out.println(); System.out.println(参数输入完成!); /输出数学模型 System.out.println(); System.out.println(输出数学模型); if ( m!=1) System.out.print(目标函数: MIN z=); else System.out.print(目标函数: MAX z
13、=); for(int i=1;in;i+) System.out.print(Ai-1+X+i+); System.out.print(An-1+X+n); System.out.println();2.3.2 截图图32.4 换入换出变量的计算2.4.1 操作代码计算得出换入、换出变量,计算换入换出变量,源代码如下:2.4.2 截图 图4 图52.5 执行计算结果 图6 第3章 设计总结 在这为期短暂的一周的课程设计时间里,真是让我匪夷所思,让我真正的体会到了什么才是java程序实践设计的应用。只有通过我们从现实生活中抽取题材,再根据自己所学的程序设计方面的只是加以应用才能使我们见识理论与
14、实践结合的妙效。这次自己所选的题目是单纯形算法的实现,自己觉得在设计过程中学习了很多,补漏了很多,做完之后还是觉得自己设计的不够理想,我坚信在往后的学习道路上我还会有很多的机会去做这方面的设计。 感谢老师为我们设计了本次课程设计,给我们充分学习和查阅网络、图书馆资源的时间,让我们认识到了学习的充分必要性。在以后的学习生活中再接再厉努力做好每一个点滴。第4章 参考文献Java程序设计经典教程 电子工业出版社Java课程设计(第二版) 清华大学出版社Java面对对象程序设计 清华大学出版社第5章 附录package 单纯形法;import java.util.Scanner;public clas
15、s test SuppressWarnings( null ) public static void main(String args) /用Java语言来编一个单纯形法编程算法 /(1)输入和显示数学模型 /(2)进行标准型变换并输出 /(3)单纯形法算法,进行换基迭代,求出基础解(可行解、最优解) /(4)输出解 System.out.println(*交通运输学院 java课程设计*); System.out.println(*专 业 信管1001班*); System.out.println(* 李 凯 201000829 *); System.out.println(* 单纯形法 线
16、行规划问题 *); System.out.println(输入数学模型); Scanner s = new Scanner(System.in); System.out.print(目标函数求最大值或最小值(1 or 0):); int m=s.nextInt(); System.out.print(有几个决策变量:); int n=s.nextInt(); System.out.print(约束条件中含=号的条件有几个?:); int m2=s.nextInt(); System.out.print(约束条件中含=号的条件有几个? ); int m3=s.nextInt(); /System
17、.out.println(n); int B=new intm1n; int C=new intm2n; int D=new intm3n; int BUM=new intm11; int CUM=new intm21; int DUM=new intm31; /输入目标函数 System.out.println(输入目标函数:); int A=new intn; String SS=new Stringn; Scanner sm = new Scanner(System.in); / for(int i=1;i=0) SSi-1=Ai-1+X+i+; else if(Ai-10) SSi-1
18、=Ai-1+X+i+-; Scanner smm = new Scanner(System.in); System.out.print(X+n+的系数是:); An-1=smm.nextInt(); SSn-1=An-1+X+n; /输出目标函数 for(int i=0;iSS.length;i+) System.out.print(SSi); /输入约束条件中含=号的条件 for(int i=1;i=m1;i+) System.out.println( ); /int B=new intm1n; String MMM=new Stringn; System.out.println(输入第+i
19、+个约束条件中含=号的); for(int j=1;jn;j+) Scanner sN = new Scanner(System.in); System.out.print(X+j+的系数是:); Bi-1j-1=sN.nextInt(); MMMj-1=Bi-1j-1+X+j+; Scanner smmm = new Scanner(System.in); System.out.print(X+n+的系数是:); Bi-1n-1=smmm.nextInt(); /MMMn-1=Nn-1+X+n+=+; /输入常数项 System.out.println(输入常数项:); /int BUM=n
20、ew intm11; Scanner sNN= new Scanner(System.in); BUMi-10=sNN.nextInt(); MMMn-1=Bi-1n-1+X+n+=+BUMi-10; /输出约束条件中含=号的条件 for(int K=0;K=的条件 for(int i=1;i=号的); for(int j=1;j=+CUMi-10; /输出约束条件中含=号的条件 for(int K=0;KAAA.length;K+) System.out.print(AAAK); /输入约束条件中含=的条件 for(int i=1;i=m3;i+) System.out.println();
21、 /int D=new intm3n; String BBB=new Stringn; System.out.println(输入第+i+个约束条件中含=的); for(int j=1;jn;j+) Scanner BN = new Scanner(System.in); System.out.print(X+j+的系数是:); Di-1j-1=BN.nextInt( BBBj-1=Di-1j-1+X+j+; Scanner BNN = new Scanner(System.in); System.out.print(X+n+的系数是:); Di-1n-1=BNN.nextInt(); / 输
22、入常数项 System.out.println(输入常数项:); /int DUM=new intm31; Scanner sBBB= new Scanner(System.in); DUMi-10=sBBB.nextInt(); BBBn-1=Di-1n-1+X+n+=+DUMi-10; /输出约束条件中含=号的条件 for(int K=0;KBBB.length;K+) System.out.print(BBBK); /参数输入完成! System.out.println(); System.out.println(参数输入完成!); /输出数学模型 System.out.println(); System.out.println(输出数学模型); if ( m!=1) System.out.print(目标函数: MIN z=);