




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
运筹学建模与源代码题目:某公司需要招聘甲,乙两种工人,其工作可分为1 2 3三大类。已知甲,乙两种工人的公子分别为每小时10元和5元,他们每周都工作40小时,但实际做出的等效生产小时数分别为40小时和30小时。为完成生产进度,该公司每周需完成的生产小时数分别为:第1类工作,10000小时;第2类工作,1500小时;第3类工作,20000小时。由于劳动力缺乏,甲种工人不能多于500个,乙种工人不能多于800个。试确定使总劳动力费用最少时工厂应招聘的工人数。并按要求分别完成下列分析:(1)第1类工作每周需完成的生产小时数在何范围内变化时最优基不变?(2)甲种工人的招聘数量在何范围内变化时最优基不变?(3)乙种工人的工资在何范围内变化时最优招聘方案不变? 需要运筹学课程设计报告的同学可以在我上传的文档中找到一、运筹学建模设x1 x2 x3分别表示第1、2、3种工作类型中甲种工人的数量,x4 x5 x6分别为1、2、3种工作类型中乙种工人的数量x1+x2+x3为三种工作类型中甲种工人的数量,x4+x5+x6为三种工作类型中乙种工人的数量。40 x1+30 x4为第一类工作类型中工人的工作时间,40 x2+30 x5为第二类工作类型中工人的工作时间,40 x3+30 x6为第一类工作类型中工人的工作时间Maxz=-400(x1+x2+x3)-200(x4+x5+x6)x1+x2+x3500x4+x5+x680040 x1+30 x4=1000040 x2+30 x5=150040 x3+30 x6=20000xj0, j=1, 2.6 二、程序源代码 该程序使用JAVA语言实现的二阶段法。Lpframe类用来实现窗体的输出package net.dbet.LP;import javax.swing.Box;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.SwingConstants;public class Lpframe extends JFrameJPanel panel=new JPanel();JRadioButton jr1=new JRadioButton(MAX);JRadioButton jr2=new JRadioButton(MIN);JLabel lbl3=new JLabel(约束条件个数:);JLabel lbl4=new JLabel(变量个数:);JLabel lbl5=new JLabel(=的约束条件个数:);JLabel lbl8=new JLabel(请输入系数矩阵先=的约束条件以“;”结尾:, SwingConstants.LEFT);JTextField txt1=new JTextField(5);JTextField txt2=new JTextField(5);JTextField txt3=new JTextField(5);JTextField txt4=new JTextField(5);JTextField txt5=new JTextField(5);JLabel lbl9=new JLabel(请输入目标函数系数矩阵:);JTextField txt6=new JTextField(20);JTextArea area=new JTextArea(15,15);ButtonGroup bg=new ButtonGroup();JButton btn1=new JButton(确定);JButton btn2=new JButton(取消);JScrollPane jsp=new JScrollPane(area);Mylistener listener=new Mylistener(this);public Lpframe()bg.add(jr1);bg.add(jr2);Box box1=Box.createHorizontalBox();box1.add(jr1);box1.add(Box.createHorizontalStrut(400);box1.add(jr2);Box box2=Box.createHorizontalBox();box2.add(lbl3);box2.add(txt1);box2.add(lbl4);box2.add(txt2);Box box3=Box.createHorizontalBox();box3.add(lbl5);box3.add(txt3);box3.add(lbl6);box3.add(txt4);box3.add(lbl7);box3.add(txt5);Box box4=Box.createHorizontalBox();box4.add(lbl8);Box box5=Box.createHorizontalBox();box5.add(jsp);box5.createVerticalStrut(50);Box box6=Box.createHorizontalBox();box6.add(lbl9);box6.add(txt6);Box box7=Box.createHorizontalBox();box7.add(btn1);box7.add(Box.createHorizontalStrut(100);box7.add(btn2);Box box=Box.createVerticalBox();box.add(box1);box.add(box2);box.add(box3);box.add(box4);box.add(box5);box.add(box6);box.add(box7);panel.add(box);btn1.addActionListener(listener);btn2.addActionListener(listener);this.getContentPane().add(panel);this.setBounds(0,0,600,600);this.setDefaultCloseOperation(3);this.setVisible(true);public static void main(String args)new Lpframe();Mylistener类用来侦听窗体类中的JButton按钮package net.dbet.LP;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.regex.Pattern;import javax.swing.JOptionPane;public class Mylistener implements ActionListenerprivate Lpframe lf;public Mylistener(Lpframe lf)this.lf=lf;public void actionPerformed(ActionEvent e) if(e.getSource()=lf.btn1)if(!(lf.txt1.getText().equals()&lf.txt2.getText().equals()&lf.txt3.getText().equals()&lf.txt4.getText().equals()&lf.txt5.getText().equals()&lf.area.getText().equals()double minmax=0; int m; /约束条件的个数 int n; /变量个数 int m1; /=的约束条件个数if(lf.jr1.isSelected()minmax=1;if(lf.jr2.isSelected()minmax=-1;m=Integer.parseInt(lf.txt1.getText();n=Integer.parseInt(lf.txt2.getText();m1=Integer.parseInt(lf.txt3.getText();m2=Integer.parseInt(lf.txt4.getText();m3=Integer.parseInt(lf.txt5.getText();double a=new doublemn+1;String str=lf.area.getText();String s1=str.split(;);for(int j=0;js1.length;j+)System.out.println(s1j);for(int i=0;im;i+)double b=new doublen+1;String regex=,;Pattern p=Ppile(regex);String r=p.split(s1i);for(int k=0;kr.length;k+)if(!(rk.trim().equals()bk=Double.parseDouble(rk);aik=bk; String g=lf.txt6.getText();double goal=new doublen;String regex=,;Pattern p=Ppile(regex);String r=p.split(g);for(int j=0;jr.length;j+)if(!(rj.trim().equals()goalj=Double.parseDouble(rj);System.out.println(goalj);LP lp = new LP(minmax,m,n,m1,m2,m3,a,goal);lf.lbl9.setText(最优值结果是:);String result=lp.solve(); lf.area.setText(result);elseJOptionPane.showMessageDialog(lf.panel,请输入数据);if(e.getSource()=lf.btn2)lf.txt1.setText();lf.txt2.setText();lf.txt3.setText();lf.txt4.setText();lf.txt5.setText();lf.txt6.setText();lf.area.setText();LP类用来实现二阶段法功能的代码package net.dbet.LP;public class LP private int m; /约束条件的个数private int n; /变量个数private int m1; /=的约束条件个数private int error; /判断是否是错误的private int basic;private int nonbasic;private double a; /约束条件的系数矩阵private double minmax; /目标函数的最大值或最小值public LP(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;/换入变量public int research_in(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;/换出变量public int research_out(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;/换入和换出变量交换public void swapbasic(int row,int col)int temp = this.basicrow;this.basicrow = this.nonbasiccol;this.nonbasiccol = temp;/交换规则找出主元并化简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=research_out(col);elsereturn 0;if(row 0)pivot(row,col);elsereturn 2;/判断有无可行解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);/判断是无可行解还是无界解public int compute()if(this.error 0)return t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 悬疑短剧节目创新创业项目商业计划书
- 晨间醒神饮创新创业项目商业计划书
- 油菜籽生物润滑剂创新创业项目商业计划书
- 媒介经理面试题及答案
- 数字化艺术与设计课程创新创业项目商业计划书
- 油菜籽专卖店连锁经营创新创业项目商业计划书
- 2025鄂尔多斯市绿能智联新能源有限公司招聘部分技术人员考前自测高频考点模拟试题及答案详解(网校专用)
- 一年级口算题分级训练方案
- 部编版五年级语文课后习题详解第七单元
- 生活污水处理设备操作流程详解
- 尿常规和粪常规解读课件
- 设备类风险辨识培训课件
- 黔菜菜名英译规范
- 神经病学诱发电位技术操作规范2023版
- 2023年高考地理真题 (浙江6月) 【备课精讲精研】 详细评讲
- 结婚函调报告表
- JJG 1036-2022电子天平
- FZ/T 64087-2022木棉纤维絮片
- GB/T 19812.6-2022塑料节水灌溉器材第6部分:输水用聚乙烯(PE)管材
- GB/T 7131-1986裂解气相色谱法鉴定聚合物
- GB/T 11379-2008金属覆盖层工程用铬电镀层
评论
0/150
提交评论