




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
运筹学建模与源代码题目:某厂生产、三种产品,都分别经A、B两道工序加工。设A工序可分别在设备A1或A2上完成,有B1、B2、B3三种设备可用于完成B工序。已知产品可在A、B任何一种设备上加工;产品可在任何规格的A设备上加工,但完成B工序时,只能在B1设备上加工,产品只能在A2与B2设备上加工。加工单位产品所需工序时间及其它各项数据如下表所示,试安排最优生产计划,使该厂获利最大。按要求分别完成下列分析:(1)产品的售价在何范围内变化时最优生产计划不变?(2)B1设备有效台时数在何范围内变化时最优基不变?(3)设备A2的加工费在何范围内变化时最优生产计划不变?(4)产品的生产量至少为80件时的最优生产计划。设备产品 设备有效台时设备加工费(元/台时)A15 1060000.05A27 9 12100000.03B16 840000.06B24 1170000.11B3740000.05原料费(元/件)0.25 0.35 0.50售价(元/件)1.25 2.00 2.80需要运筹学课程设计报告的同学可以在我上传的文档中找到一、运筹学建模3.1 设定变量设Xi表示采用九种不同的方式进行生产、三种产品的数量。产品有六种组合,以X1、X2、X3、X4、X5、X6分别表示(A1,B1)、(A1,B2)、(A1、B3)、(A2,B1)、(A2,B2)、(A2,B3)加工的产品数量;有两种组合,以X7、X8分别表示(A1,B1)、(A2,B1)加工的产品的数量;有一种组合,即(A2,B2),以X9表示加工产品的数量;不同的设备组合带来的利润也不同。3.2 根据题意推理产品时有:设备组合 (A1,B1)的利润为Z1=(1.25-0.25)X1-(5*0.05)X1-(6*0.06)X1=0.39X1设备组合(A1,B2)的利润为Z2=X2-0.25X2-0.44X2=0.31X2设备组合(A1,B3)的利润为Z3=X3-0.25X3-0.35X3=0.4X3设备组合(A2,B1)的利润为Z4=X4-0.21X4-0.36X4=0.43X4设备组合(A2,B2)的利润为Z5=X5-0.21X5-0.44X5=0.35X5设备组合(A2,B3)的利润为Z6=X6-0.21X6-0.35X6=0.44X6产品时有:设备组合(A1,B1)的利润为Z7=1.65X7-0.5X7-0.48X7=0.67X7设备组合(A2,B1)的利润为Z8=1.65X8-0.27X8-0.48X8=0.9X8产品时有:设备组合(A2,B2)的利润为Z9=2.3X9-0.36X9-1.21X9=0.73X93.3 确立最终模型利润:Maxz=0.39X1+0.31X2+0.4X3+0.43X4+0.35X5+0.44X6+0.67X7+0.9X8+0.73X95X1+5X2+5X3+10X7=60007X4+7X5+7X6+9X8+12X9=100006X1+6X4+8X7+8X8=4000 4X2+4X6+11X9=70007X3+7X6=0 (i=1,2,3,4,5,6,7,8,9)3.4 计算机求解前的手工数据准备Ci0.390.310.40.430.350.440.670.90.73biX1X2X3X4X5X6X7X8X9600055500010001000000077709124000600600880700004000400114000007007000 二、程序源代码 JAVA程序代码package net.dbet.java;import java.util.ArrayList;import java.util.List;public class Program private int m; /约束条件的个数private int n; /变量个数private int m1; /=的约束条件个数private int error; /判断是否是错误的private int basic;private int nonbasic;private double a; /约束条件的系数矩阵private double minmax; /目标函数的最大值或最小值 函数Program,没有返回值,参数minmax、 m、 n、m1、m2、m3、a、x,其作用是根据输入的数据,通过转换将其变成单纯型表public Program(double minmax,int m,int n,int m1,int m2,int m3,double a,double x)double value;this.error = 0;this.minmax = minmax;this.m = m;this.n = n;this.m1 = m1;this.m2 = m2;this.m3 = m3;if(m != m1+m2+m3)this.error = 1;this.a = new doublem+2;for(int i = 0; i m+2; i+)this.ai = new doublen+m+m3+1;this.basic = new intm+2;this.nonbasic = new intn+m3+1;for(int i = 0; i = m+1; i+)for(int j = 0; j = n+m+m3; j+)this.aij = 0.0;for(int j = 0; j = n+m3; j+)nonbasicj = j;for(int i = 1,j = n+m3+1; i = m; i+,j+)basici=j;for(int i = m-m3+1,j = n+1; i= m; i+,j+)this.aij=-1;this.am+1j=-1;for(int i = 1; i = m; i+)for(int j = 1; j = n; j+)value = ai-1j-1;this.aij=value;value = ai-1n;if(value0)error = 1;this.ai0=value;for(int j = 1; j = n; j+)value = xj - 1;this.a0j = value * minmax;for(int j = 1; j = n; j+)value = 0;for(int i = m1+1; i = m; i+)value+=this.aij;this.am+1j=value; 函数enter,它的返回值类型为int,参数objrow,其作用是找到每次迭代单纯形表的组元所在的列public int enter(int objrow)int col = 0;for(int j = 1; j = this.n + this.m3; j+)if(this.nonbasicj 10e-8)col=j;break;return col;函数leave,它的返回值类型为int,参数col,其作用是找到每次迭代单纯形表的组元所在的行public int leave(int col)double temp=-1;int row = 0;for(int i = 1; i 10e-8)val = this.ai0/val;if(val temp | temp = -1)row = i;temp = val;return row;函数swapbasic,它的返回值类型为void(表示没有返回值),参数row、col,其作用是交换每次迭代的组元所在的行和列的元素public void swapbasic(int row,int col)int temp = this.basicrow;this.basicrow = this.nonbasiccol;this.nonbasiccol = temp;函数pivot,它的返回值类型为void(表示没有返回值),参数row、col,其作用是通过传入组元的行和列,找到组元,然后让组元除以自身,把组元变为1;组元所在的行也都除以组元;如果组元所在的列的元素不为零,则“不为零元素的行的元素”分别减去“组元所在的行与组元所在的列不为零的元素的乘积”public void pivot(int row,int col)for(int j = 0;j = this.n + this.m3; j+)if(j != col)this.arowj = this.arowj / this.arowcol;this.arowcol = 1.0 / this.arowcol;for(int i = 0; i = this.m + 1; i+)if(i != row)for(int j = 0; j = this.n + this.m3; j+)if(j != col)this.aij = this.aij - this.aicol * this.arowj;if(Math.abs(this.aij) 0)row=leave(col);elsereturn 0;if(row 0)pivot(row,col);elsereturn 2;函数phase1,它的返回值类型为int,没有参数,其作用是在函数simplex确定没有无界解的前提下,判断是否有可行解public int phase1()this.error = simplex(this.m + 1);if(this.error 0)return this.error;for(int i = 1; i this.n + this.m1 + this.m3)if(this.ai0 10e-8)return 3;for(int j = 1; j = 10e-8)pivot(i,j);break;return 0;public int phase2()return simplex(0);函数compute,它的返回值类型为int,没有参数,其起到承上启下的作用,承上是函数simplex和函数phase1、函数phase2(),启下是函数solve,根据函数simplex和函数phase1确定error这个变量是取0、1、2、3中的哪一个,然后传给函数solvepublic int compute()if(this.error 0)return this.error;if(this.m != this.m1)this.error = phase1();if(this.error 0)return this.error;return phase2();public void solve()error=compute();switch(error)case 0:output();break;case 1:System.out.println(输入数据错误!);break;case 2:System.out.println(无界解!);break;case 3:System.out.println(无可行解!);break;default:break;函数output,它的返回值类型为void,没有参数,它的作用是根据最优表确定最优值,然后将最优值输出public void output()int basicp = new intn+1;for(int i = 0; i = n; i+)basicpi = 0;for(int i = 1; i = 1 & basici = n)basicpbasici = i;for(int i = 1; i = n; i+)System.out.print(x+i+=);if(basicpi != 0)System.out.print(abasicpi0);elseSystem.out.print(0);System.out.println();System.out.println(最优值:+-minmax*a00);主函数,用于确定数据输入的形式,并调用以上函数public static void main(String args) / TODO Auto-generated method stubjava.util.Scanner sc=new java.util.Scanner(System.in);System.out.println(请输入系数矩阵);double num1=new double10;double num2=new double10;double num3=new double10;double num4=new double10;double num5=new double10;double x = new double9;System.out.println(请输入第1行数);for(int i=0;i10;i+)num1i=sc.nextDouble();System.out.println(请输入第2行数);for(int i=0;i10;i+)num2i=sc.nextDouble();System.out.println(请输入第3行数);for(int i=0;i10;i+)num3i=sc.nextDouble();System.out.print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽文达信息工程学院《数字化教育资源设计与制作》2024-2025学年第一学期期末试卷
- 文华学院《数据通信与网络》2024-2025学年第一学期期末试卷
- 江西工程学院《视频编辑》2024-2025学年第一学期期末试卷
- 2025年燃气储运基础知识入门测试题及答案解析
- 2025年游戏开发专家实战高级面试技巧与预测题集萃
- 辽宁轻工职业学院《会展项目综合运营三》2024-2025学年第一学期期末试卷
- 2025年成功晋级声像鉴定人必-备手册专业预测试题集锦
- 2025年物流仓储领域招聘面试技巧与模拟题集
- 大连商务职业学院《建筑结构》2024-2025学年第一学期期末试卷
- 2025年炼钢工艺流程标准化操作指南及高级考试要求解析
- GB/T 34557-2017砂浆、混凝土用乳胶和可再分散乳胶粉
- 半导体制造工艺基础之扩散工艺培训课件
- 溶剂油MSDS危险化学品安全技术说明书
- SURPAC软件地质建模操作步骤
- 新北师大单元分析六上第六单元《比的认识》单元教材解读
- 福建升辉鞋业有限公司年加工EVA鞋底385万双、TPR鞋底65万双、PVC鞋底60万双项目环评报告表
- 零星维修服务方案
- 胸腺瘤诊断治疗指南
- 视网膜静脉阻塞.LM
- 华为客户接待规范接待礼仪课件
- 海底捞-A级门店管理制度
评论
0/150
提交评论