运筹学综合实验报告
运筹学实验报告
运筹学实验报告姓名:学号:班级:指导老师:实验内容1、线性规划问题:⎪⎪⎩⎪⎪⎨⎧≥≤+≤+≤++=0,13119241171289..68max 2121212121x x x x x x x x t s x x z (1) 给出原始代码;(2) 计算结果(包括灵敏度分析,求解结果粘贴);(3) 回答下列问题(手写):a ) 最优解及最优目标函数值是多少;b ) 资源的对偶价格各为多少,并说明对偶价格的含义;c ) 为了使目标函数值增加最多,让你选择一个约束条件,将它的常数项增加一个单位,你将选择哪一个约束条件?这时目标函数值将是多少?d ) 对x 2的目标函数系数进行灵敏度分析;e ) 对第2个约束的约束右端项进行灵敏度分析;f ) 结合本题的结果解释“Reduced Cost ”的含义。
解:(1) max =8*x1+6*x2;9*x1+8*x2<=12; 7*x1+11*x2<=24; 9*x1+11*x2<=13;(2)计算结果: Objective value: 10.66667Total solver iterations: 2 Variable Value Reduced Cost X1 1.333333 0.000000 X2 0.000000 1.111111 Row Slack or Surplus Dual Price 1 10.66667 1.000000 2 0.000000 0.8888889 3 14.66667 0.000000 4 1.000000 0.000000灵敏度分析: Objective Coefficient RangesCurrent Allowable Allowable Variable Coefficient Increase Decrease X1 8.000000 INFINITY 1.250000 X2 6.000000 1.111111 INFINITY Righthand Side RangesRow Current Allowable Allowable RHS Increase Decrease 2 12.00000 1.000000 12.00000 3 24.00000 INFINITY 14.66667 4 13.00000 INFINITY 1.000000(3)a)该LP问题的最优解x={x1,x2}={1.333333,0.000000} 目标函数值z=10.66667b)第2行资源的对偶价格为0.8888889,3、4行的对偶价格为0、0.对偶价格的含义:表示当对应约束有微小变动时, 目标函数的变化率。
运筹学上机实验报告
运筹学实验报告一、实验项目名称:运筹学综合实验二、实验目的:1、熟悉WinQSB的用户界面2、学习建立数学模型的方法3、掌握用WinQSB求解运筹学的方法及步骤4、解读计算机运行结果,结合所学知识给出文字定性结论三、实验环境:WinQSB软件,计算机四、实验内容及步骤:①该项工程从施工开始到全部结束的最短周期;②如果引道混凝土施工工期拖延10天,对整个工程进度有何影响;③若装天花板的施工时间从12天缩短到8天,对整个工程进度有何影响;④为保证工期不拖延,装门这项作业最晚从哪一天开始开工;⑤如果要求该项工程必须在75天内完工,是否应采取措施及应从哪些方面采取措施。
2、分析题目并决定运用软件3、根据分析运用WinQSB软件进行求解1)、点击开始—程序—WinQSB—PERT-CTM,启动程序2)、点击file----New Problem----建立新问题,如图(1)(2)所示,填写问题名称,项目数量,问题类型,输入模式及时间分布类型,点击OK(1)(2)i3)、求解第①问:由题输入数据,结果如下图(3)所示(3)4)数据输入完毕后,求解问题的答案,点击Solve and Analyze-----Solve Critical Path,软件运行结果如图(4)所示(4)由图可知问题①的答案及从施工开始到全部结束的最短路线为80天。
为进一步得出其关键路线,可分别点击图标,得出下图(5)(6)(5)(6)6)、同样步骤求解第②问,即引道混凝土施工工期拖延10天的情况下,输入数据得到如下图图(7)所示结果(7)(8)(9)(10)由上图(7)(8)(9)(10)可知当引道混凝土工期拖延10天时,其最短周期还是80天,关键路线不变,即无影响。
7)、同样步骤求解第③问,即装天花板时间由12天缩短为8天情况下,输入数据得到如下图所示结果(11)(12)(13)(14)由图(11)(12)(13)(14)可知,当装天花板的施工时间从12天缩短为8天时,其最短周期由原来的80天缩短为76天,提前4天。
运筹学实验报告
运筹学实验报告运筹学实验报告一、实验目的:本实验旨在了解运筹学的基本概念和方法,并通过实践,掌握运筹学在实际问题中的应用。
二、实验过程:1.确定运筹学的应用领域:本次实验选择了物流配送问题作为运筹学的应用领域。
2.收集数据:我们选择了一个小型企业的物流配送数据进行分析,并将数据录入到计算机中。
3.建立模型:根据所收集的数据,我们建立了一个代表物流配送问题的数学模型。
4.运用运筹学方法进行求解:我们运用了线性规划的方法对物流配送问题进行求解,并得到了最优解。
5.分析结果:通过分析最优解,我们得出了一些有关物流配送问题的结论,并提出了一些优化建议。
三、实验结果:通过运用运筹学方法对物流配送问题进行求解,我们得到了一个最优解,即使得物流成本最低的配送方案。
将最优解与原始的配送方案进行对比,我们发现最优解的物流成本降低了20%,节省了货物运输的时间,减少了仓储成本。
四、实验结论:通过本次实验,我们了解了运筹学的基本概念和方法,并成功应用运筹学方法解决了物流配送问题。
通过分析最优解,我们发现采用最优解可以降低物流成本,提高配送效率。
因此,我们得出结论:运筹学在物流配送问题中的应用具有重要意义,可以帮助企业降低成本、提高效率。
五、实验心得:通过本次实验,我对运筹学有了更深入的了解。
通过实践应用运筹学方法,我明白了运筹学的实用性和价值。
在以后的工作中,我会更加注重运筹学方法的应用,以解决实际问题,提高工作效率。
本次实验不仅增强了我的动手实践能力,也培养了我分析和解决问题的能力。
我将继续学习和探索运筹学的知识,为将来的工作打下坚实的基础。
运筹学实验报告心得
运筹学实验报告心得运筹学实验报告实验一:线性规划问题1、实验目的:?学习建立数学模型的方法,并懂得区别运筹学中不同分支的数学模型的特点。
?掌握利用计算机软件求解线性规划最优解的方法。
2、实验任务?结合已学过的理论知识,建立正确的数学模型; ?应用运筹学软件求解数学模型的最优解?解读计算机运行结果,结合所学知识给出文字定性结论 3、实验仪器设备:计算机 4、实验步骤:(1)在主菜单中选择线性规划模型,在屏幕上就会出现线性规划页面,如图所示。
(2)在点击“新建”按钮以后,按软件的要求输入目标函数个数和约束条件个数,输入目标函数及约束条件的各变量的系数和b值,并选择好“?”、“?”或“=”号,如图所示。
(3)当约束条件输入完毕后,请点击“解决”按钮,屏幕上将显现线性规划问题的结果,如图所示。
例题一:例题二:例题三:例题四:例题五5、试验体会或心得运筹学是一门实用的学科,学习运筹学,结合生活实际运用运筹学,我们可以将资源最大化利用。
学习理论的目的就是为了解决实际问题。
线性规划的理论对我们的实际生活指导意义很大。
当我们遇到一个问题,需要认真考察该问题。
如果它适合线性规划的条件,那么我们就利用线性规划的理论解决该问题。
线性规划指的是在资源有限的条件下,为达到预期目标最优,而寻找资源消耗最少的方案。
其数学模型有目标函数和约束条件组成。
一个问题要满足一下条件时才能归结为线性规划的模型:?要求解的问题的目标能用效益指标度量大小,并能用线性函数描述目标的要求;?为达到这个目标存在很多种方案;?要到达的目标是在一定约束条件下实现的,这些条件可以用线性等式或者不等式描述。
所以,通过这次实验,不仅对运筹学的有关知识有了进一步的掌握,同时对在自己的计算机操作水准也有了很大的提高。
这次实验让我懂得了运筹学在电脑的应用,让我对运输与数学相结合的应用理解更深了。
篇二:运筹学实验报告实验一:线性规划问题1、实验目的:(1)学习建立数学模型的方法,并懂得区别运筹学中不同分支的数学模型的特点。
运筹学实践教学报告范文(3篇)
第1篇一、引言运筹学作为一门应用数学分支,广泛应用于经济管理、工程技术、军事决策等领域。
本报告旨在通过运筹学实践教学,验证理论知识在实际问题中的应用效果,提高学生的实践能力和创新能力。
以下是对本次实践教学的总结和反思。
二、实践教学内容1. 线性规划问题本次实践教学选择了线性规划问题作为研究对象。
通过建立线性规划模型,我们尝试解决生产计划、资源分配等实际问题。
- 案例一:生产计划问题某公司生产A、B两种产品,每单位A产品需消耗2小时机器时间和3小时人工时间,每单位B产品需消耗1小时机器时间和2小时人工时间。
公司每天可利用机器时间为8小时,人工时间为10小时。
假设A、B产品的利润分别为50元和30元,请问如何安排生产计划以获得最大利润?- 建模:设A产品生产量为x,B产品生产量为y,目标函数为最大化利润Z = 50x + 30y,约束条件为:\[\begin{cases}2x + y \leq 8 \\3x + 2y \leq 10 \\x, y \geq 0\end{cases}\]- 求解:利用单纯形法求解该线性规划问题,得到最优解为x = 3,y = 2,最大利润为240元。
- 案例二:资源分配问题某项目需要分配三种资源:人力、物力和财力。
人力为50人,物力为100台设备,财力为500万元。
根据项目需求,每种资源的需求量如下:- 人力:研发阶段需20人,生产阶段需30人;- 物力:研发阶段需30台设备,生产阶段需50台设备;- 财力:研发阶段需100万元,生产阶段需200万元。
请问如何合理分配资源以满足项目需求?- 建模:设人力分配量为x,物力分配量为y,财力分配量为z,目标函数为最大化总效用U = x + y + z,约束条件为:\[\begin{cases}x \leq 20 \\y \leq 30 \\z \leq 100 \\x + y + z \leq 500\end{cases}\]- 求解:利用线性规划软件求解该问题,得到最优解为x = 20,y = 30,z = 100,总效用为150。
运筹学实验报告
运筹学实验报告一实验一:线性规划【例l】某制药厂用甲、乙两台机器生产A、B两种药物。
每种药物要经过两道工序,在甲机器上搅拌,在乙机器上包装。
生产每千克药物所需的加工时间以及机器1周可用于加工的总时间如下表1所示。
已知生产每千克药物A的利润是30元,B是25元,问应如何安排1周的生产计划才能使工厂获利最大?表 1 两种药物在各机器上所需加工时间及各机器可用于加工的总时间(1)写出数学模型,建立新问题、输入选项(电子表格、变量取非负连续)、输入数据、存盘、求解模型、结果存盘、观察结果。
(2)将电子表格格式转换成标准模型。
(3)将结果复制到Excel或Word文档中。
(4)分析结果。
解:(1)从已知条件写出该问题的数学模型:max Z=30x1+25x2;2x1+4x2<=40;3x1+2x2<=30;x1>=0,x2>=0.建立新问题、输入选项(电子表格、变量取非负连续)、输入数据、存盘、求解模型、结果存盘、观察结果:求解模型过程Simplex Tableau -- Iteration 1X1 X2 Slack_C1 Slack_C2Basis C(j) 30.0000 25.0000 0 0 R. H. S. RatioSlack_C1 0 2.0000 4.0000 1.0000 0 40.0000 20.0000Slack_C2 0 3.0000 2.0000 0 1.0000 30.0000 10.0000C(j)-Z(j) 30.0000 25.0000 0 0 0Simplex Tableau -- Iteration 1X1 X2 Slack_C1 Slack_C2Basis C(j) 30.0000 25.0000 0 0 R. H. S. RatioSlack_C1 0 2.0000 4.0000 1.0000 0 40.0000 20.0000Slack_C2 0 3.0000 2.0000 0 1.0000 30.0000 10.0000C(j)-Z(j) 30.0000 25.0000 0 0 0Simplex Tableau -- Iteration 3X1 X2 Slack_C1 Slack_C2Basis C(j) 30.0000 25.0000 0 0 R. H. S. RatioX2 25.0000 0 1.0000 0.3750 -0.2500 7.5000X1 30.0000 1.0000 0 -0.2500 0.5000 5.0000C(j)-Z(j) 0 0 -1.8750 -8.7500 337.5000(2)将电子表格格式转换成标准模型。
运筹学实验报告(1)
运筹学实验报告一、实验目的:通过实验熟悉单纯形法的原理,掌握matlab循环语句的应用,提高编程的能力和技巧,体会matlab在进行数学求解方面的方便快捷。
二、实验环境:Matlab2012b,计算机三、实验内容(包含参数取值情况):构造单纯形算法解决线性规划问题Min z=cxs.t. Ax=bxj>=0,j=1,…,n函数功能如下:function[S,val]=danchun(A1,C,N)其中,S为最优值,Val为最优解,A1为标准形式LP问题的约束矩阵及最后一列为资源向量(注:资源向量要大于零),A1=[A+b];C是目标函数的系数向量,C=c;N为初始基的下标(注:请按照顺序输入,若没有初始基则定义N=[])。
先输入A1,C,N三个必要参数,然后调用danchun(A1,C,N)进行求解。
在此函数中,首先判断N的长度是否为空,若为空,则flag=1,进入初始解问题的迭代求值,添加辅助问题,构建单纯形表,求g所对应的RHS值,若其>0,则返回该问题无解,若其=0,则返回A1,C,N三个参数,继续构造单纯形表求解。
A1为经过变换后的系数及资源向量,C为单纯形表的第一行,N为经过辅助问题求解之后的基的下标。
否则,直接构建单纯形表,对该问题进行求解,此时flag=2,多次迭代后找到解。
另外,若在大于零的检验数所对应的系数均小于零时,会显示“此问题无界”。
若找到最优解和最优值时,会输出“val”和“S=”以及具体数值。
四、源程序(在matlab中输入edit后回车,写在.M文件中,并保存为danchun.M)function[S,val]=danchun(A1,C,N)if(length(N)==0)gN=zeros(1,length(A1(:,1)));gC=[-C,gN,0];%原文题的检验数的矩阵G=[zeros(1,length(C)),-ones(1,length(gN)),0];val=zeros(1,length(C));%val为最优解;for i=(length(C)+1):length(C)+length(A1(:,1))%生成基变量gN(i-length(C))=i;endNn=gN;%%%%%%%ll=zeros(1,length(N));%比值最小原则%生成除了最上端两行的表的矩阵gb=A1(:,length(C)+1);A1(:,length(C)+1)=[];l=zeros(length(gN),length(gN));gA=[A1,l,gb];for i=1:length(gb)gA(i,gN(i))=1;endfor i=1:length(gN)%J为基本可行基所对应的检验数J(i)=G(gN(i));endfor i=1:length(gN)%找到基本可行基的检验数,将其赋值为0 if(J(i)~=0)G=G-(J(i)/gA(i,gN(i)))*gA(i,:);endendflag=1;elseflag=2;A=A1;Z=[-C,0];%单纯形表的第一行val=zeros(1,length(C));%val为最优解;ll=zeros(1,length(N));%比值最小原则end%%初始解问题while flag==1for i=1:length(gN)%J为基本可行基所对应的G的检验数J(i)=G(gN(i));JZ(i)=Z(gN(i));%JZ为基本可行基所对应的Z的检验数endfor i=1:length(gN)%找到基本可行基的检验数,将其赋值为0 if(J(i)~=0)G=G-(J(i)/gA(i,gN(i)))*gA(i,:);Z=Z-(JZ(i)/gA(i,gN(i)))*gA(i,:);endG1=G;%G1为检验数G1(:,length(G1))=[];D=max(G1);%找到检验数的最大值if(D<=0)%检验数都小于0if(G(length(G))>=1)disp('此情况无解');flag=0;elseif(G(length(G))>=0)for i=1:length(gN)if(max(gN)<=length(A1(1,:)));flag=2;for j=1:length(Nn)a=Nn(1);gA(:,a)=[];Z(a)=[];endA=gA;N=gN;break;endendendendelse%检验数大于0for i=1:length(G)if(G(i)==D)%找到最大的那个检验数所对应的元素for j=1:length(gN)if(gA(j,i)>0)ll(j)=gA(j,length(G))/gA(j,i);%求比值elsell(j)=10000;endendd=min(ll);for k=1:length(ll)%找到进基和离基if(ll(k)==d)gN(k)=i;gA(k,:)=gA(k,:)/gA(k,i);for m=1:k-1gA(m,:)=-(gA(m,i)/gA(k,i))*gA(k,:)+gA(m,:);endfor n=k+1:length(ll)gA(n,:)=-(gA(n,i)/gA(k,i))*gA(k,:)+gA(n,:);endbreak;endendendendendendwhile(flag==2)for i=1:length(N)%J为基本可行基所对应的检验数J(i)=Z(N(i));endfor i=1:length(N)%找到基本可行基的检验数,将其赋值为0if(J(i)~=0)Z=Z-(J(i)/A(i,N(i)))*A(i,:);endendZ1=Z;%Z1为检验数Z1(:,length(Z1))=[];D=max(Z1);%找到检验数的最大值if(D<=0)%检验数都小于0disp('已找到最优解和最优值')for i=1:length(N)val(N(i))=A(i,length(Z));endS=Z(length(Z));disp('val');disp(val);flag=0;else%检验数大于0for i=1:length(Z)if(Z(i)==D)%找到最大的那个检验数所对应的元素for j=1:length(N)if(A(j,i)>0)ll(j)=A(j,length(Z))/A(j,i);%求比值elsell(j)=10000;endendd=min(ll);if(d==10000)disp('此问题无界')flag=0;break;endfor k=1:length(ll)%找到进基和离基if(ll(k)==d)N(k)=i;A(k,:)=A(k,:)/A(k,i);for m=1:k-1A(m,:)=-(A(m,i)/A(k,i))*A(k,:)+A(m,:);endfor n=k+1:length(ll)A(n,:)=-(A(n,i)/A(k,i))*A(k,:)+A(n,:);endbreakendendendendendend五、运行结果与数据测试参考例题:例1:Min z=3x1+x2+x3+x4s.t. -2x1+2x2+x3=43x1+2x+x4=6Xj>=0,j=1,2,3,4在workspace中写入,形式如下:>> A=[-2 2 1 0 43 1 0 1 6]A =-2 2 1 0 43 1 0 1 6>> C=[3 1 1 1]C =3 1 1 1>> N=[3 4]N =3 4>> danchun(A,C,N)已找到最优解和最优值val0 2 0 4ans =6例2:初始解问题Min z=5x1+21x3s.t. x1-x2+6x3-x4=2x1+x2+2x3-x5=1xj>=0,j=1,…,5在workspace中写入,形式如下:>> A=[1 -1 6 -1 0 21 12 0 -1 1]A =1 -1 6 -1 0 21 12 0 -1 1 >> C=[5 0 21 0 0]C =5 0 21 0 0>> N=[]N =[]>> danchun(A,C,N)已找到最优解和最优值val0.5000 0 0.2500 0 0ans =7.7500六、求解实际问题(即解决附件中的实验题目)实验题目列出下列问题的数学模型,并用你自己的单纯形算法程序进行计算,最后给出计算结果。
运筹学实验报告(14p)
工商管理学院2019-2020学年第二学期《管理运筹学》课程实验报告专业班级:工商管理1402学号:2019年6月30日【实验1:线性规划】(1) 对以下问题进行求解:12121212212max 32262+812,0z x x x x x x x x x x x =++≤⎧⎪≤⎪⎪-+≤⎨⎪≤⎪≥⎪⎩************************************************************************求解结果:结果分析:(1) 该问题的最优解为: 当x1=3.3333,x2=1.3333时, 此问题有最有解,max z=12.6667(2) 4个约束条件的右端项分别在什么范围变化,问题最优基不变: 当问题最优基不变时,4.0000>=b1<=7.0000 6.0000>=b2<=12.0000 -2.0000>=b3<=M1.3333>=b4<=M完成时间:2020/6/30 8:30:39************************************************************************(2)通过对以下问题的分析,建立线性规划模型,并求解:某工厂要用三种原材料C、P、H混合调配出三种不同规格的产品A、B、D。
已知产品的规格要求,产品单价,每天能供应的原材料数量及原材料单价分别见下表1和2。
该厂应如何安排生产,使利润收入为最大?************************************************************************建立的线性规划模型为:用i=1,2,3分别代表原材料C,P,H,用j=1,2,3分别代表A,B,C三种产品,设xij为生产第j 种产品使用的第i种原材料的质量。
Maxz=50*(x11+x21+x31)+35*(x12+x22+x32)+25*(x13+x23+x33)-65*(x11+x12+x13)-25*(x21+x22+x23)-35*(x31+x32+x33)x11>=0.5*(x11+x21+x31)x21<=0.25*(x11+x21+x31)x12>=0.25*(x12+x22+x32)x22<=0.5*(x12+x22+x32)xij>=0(i=1,2,3,j=1,2,3)生产A 种产品用C 0.5千克,P 0.25千克,H为60千克,B种产品用C 0. 25千克,P 0.5千克,H 0千克,不生产C产品时利润最大为903.7500元完成时间:2020/6/30 09:11************************************************************************【实验2:运输问题与指派问题】(1)对以下运输问题进行求解:************************************************************************ 求解结果与分析:完成时间:2020/6/30************************************************************************(2)对以下运输问题进行求解:设有三个化肥厂(A, B, C)供应四个地区(I, II, III, IV)的农用化肥。
运筹学综合实验报告
《运筹学》实验报告实验名称:综合实践运用班级:组员:学院:完成时间:2011年12月指导教师:1 实验目的1、掌握运筹学概念、原理、模型以及实际应用意义。
2、理解掌握运筹学综合实践应用。
2 实验内容案例B4童心玩具厂下一年度的现金流(万元)如表中所示,表中负号表示2该月现金流出大于流入,为此该厂需要借款。
借款有两种方式:一是于上一年末借一年期贷款,一次得全部贷款额,从一月底起每月还息1%,于12月归还本金和最后一次利息;二是得到短期贷款,每月出获得,于月底归还,月息 1.5%。
当该厂有多余现金时,可短期存款,月初存入,月末取出,月息0.4%。
问该厂应如何进行存款操作,既能弥补可能出现的负现金流,又可以使年末现金总量最大?3 实验具体方法及步骤3.1 案例分析从案例中可以知道,该厂全年可以进行的借贷次数不限,借贷类型有两种,分别是长贷和短贷,为保证厂方的现金充足,可以在借贷了长贷的情况下依据实际情况借贷短贷。
其中长贷(用y表示)只借贷一次,在年初发生,以后每个月都将要还长贷的0.01%y的利息,总共要还12个月,还息日期为每个月的月底,也即是下一个月份的月初还息;而每个月还可以进行短期贷款(用wi表示),可贷款12个月,并于月底也就是下个月出还段贷款息1.5%wi,也就是说每个月的月初将进行一次短贷贷款,并还上一个月的短贷息 1.5%wi;而每个月若是有现金余留,可将现金(用zi表示)存款,利息为0.4%zi,总共为12个月综上可知,第一个月现金余额须为长贷额+短贷额-月底存款额要大于第一个月的现金需求额,从第二个月开始:上一个月的存款本息+本月贷款额-长贷利息-上个月短贷本息-月底存款额要大于本月的现金需求3.2 建立模型设长期贷款为y,wi表示第i个月的短期贷款额,zi为第i个月的短期存款额,i=1,2,3,4,5,6,7,8,9,10,11,12,目标函数为年底的最多现金额Max Z(目标函数为第12个月份所遗留的现金额,即求第12个月份的现金余额最大),其中约束条件共有12个,分别代表每个月份的现金约束,则线性模型可建立为:Max Z=(1+0.004)x12-(1+0.01)y-(1+0.015)w12S.t{y+w1-z1>=12 第1个月(1+0.004)z1-0.01y-(1+0.015)w1-z2+w2>=10 第2个月(1+0.004)z2-0.01y-(1+0.015)w2-z3+w3>=8 第3个月(1+0.004)z3-0.01y-(1+0.015)w3-z4+w4>=10 第4个月(1+0.004)z4-0.01y-(1+0.015)w4-z5+w5>=4 第5个月(1+0.004)z5-0.01y-(1+0.015)w5-z6+w6>=-5 第6个月(1+0.004)z6-0.01y-(1+0.015)w6-z7+w7>=7 第7个月(1+0.004)z7-0.01y-(1+0.015)w7-z8+w8>=2 第8个月(1+0.004)z8-0.01y-(1+0.015)w8-z9+w9>=-15 第9个月(1+0.004)z9-0.01y-(1+0.015)w9-z10+w10>=-12 第10个月(1+0.004)z10-0.01y-(1+0.015)w10-z11+w11>=7 第11个月(1+0.004)z11-0.01y-(1+0.015)w11-z12+w12>=-45 第12个月}该案例线性模型使用LINGO软件进行求解,编辑如下程序:求解得到结果如图所示,为:结果解析:本实验结果为小组3成员各自独立完成并且结果一致所得。
运筹学实验报告
《运筹学》实验报告指派问题班级:姓名:学号:指导教师:《运筹学》实验报告(一)一.实验目的熟练的掌握整数规划,0-1规划问题的数学模型的建立于求解和数据分析二.实验要求利用EXCEL软件求解整数规划和0-1规划模型三.实验准备Pc486微机、Windows环境、Excel软件四.实验内容及步骤实验内容:某公司面临5项任务,计划派甲、乙、丙、丁、戊分别去做。
由于戊临时被公司派往国外,因此公司只有让甲、乙、丙、丁中的一个人同时担任两项任务,其他三人仍旧单独完成一项任务。
各人完成相应任务时间如下表。
请为公司制定一个总工时最小的指派方案。
实验内容分析:本题中研究的是制定一个总工时最小的工作任务分配方案即本题是一个0-1规划问题。
又本题中是四个员工五个任务的不平衡的分配任务,所以可以有增加虚拟人物的方式来解决不平衡问题也可以直接用抽屉原则来解决不平衡问题。
方法一:(虚拟人物法)建立数学模型:变量:甲员工做A任务为X11,甲员工做B任务为X12,甲员工做C任务为X13,甲员工做D任务为X14,甲员工做E任务为X15,乙员工做A任务为X21,乙员工做B任务为X22,乙员工做C任务为X23,乙员工做D任务为X24,乙员工做E任务为X25,丙员工做A 任务为X31,丙员工做B任务为X32,丙员工做C任务为X33,丙员工做D任务为X34,丙员工做E任务为X35,丁员工做A任务为X41,丁员工做B任务为X42,丁员工做C任务为X43,丁员工做D任务为X44,丁员工做E任务为X45,虚拟员工做A任务为X51,虚拟员工做B任务为X52,虚拟员工做C任务为X53,虚拟员工做D任务为X54 ,虚拟员工做E任务为X55目标:总工时最小的人员安排方法约束:每人(包括虚拟人物)只能做一项任务即决策变量的0-1约束。
规划模型如下:MINZ(x)=25X11+29X12+31X13+42X14+37X15+39X21+38X22+26X23+20X24 +33X25+34X31+27X32+28X33+40X34+32X35+24X41+42X42+36X43+23X44+45X45+24X51+27X52+26X53+20X54+32X55X11+ X21+ X31+ X41+ X51=1X12+ X22+ X32+ X42+ X52=1X13+ X23+ X33+ X34+ X35=1X14+ X24+ X34+ X44+ X45=1X15+ X25+ X35+ X45+ X55=1 s.t. X11+ X12+ X13+ X14+ X15=1X21+ X22+ X23+ X24+ X25=1X31+ X32+ X33+ X34+ X35=1X41+ X42+ X43+ X44+ X45=1X51+ X52+ X53+ X54+ X55=1X ij=0或1(i=0-5,j=0-5)用EXCEL求解上式,过程如下:输入效率矩阵、方案矩阵和约束条件单元格公式:求解参数对话框如图所示:最终结果为:最小总工时131甲做A任务乙做C任务和D任务丙做E任务丁做B任务方法二:(抽屉原则法)建立数学模型:设甲员工做A任务为X11,甲员工做B任务为X12,甲员工做C任务为X13,甲员工做D任务为X14,甲员工做E任务为X15,乙员工做A任务为X21,乙员工做B任务为X22,乙员工做C任务为X23,乙员工做D任务为X24,乙员工做E任务为X25,丙员工做A任务为X31,丙员工做B任务为X32,丙员工做C任务为X33,丙员工做D任务为X34,丙员工做E任务为X35,丁员工做A任务为X41,丁员工做B任务为X42,丁员工做C任务为X43,丁员工做D任务为X44,丁员工做E任务为X45。
运筹学综合实验报告
内蒙古农业大学运筹学课程综合性实验报告运筹学模型在人力资源决策中的应用----D公司人力资源决策问题案例A4D公司人力资源决策问题D公司需要以下三类人员:不熟练工人、半熟练工人和熟练工人。
据估计,当前以及以后三年需要的各类人员的人数(单位:人)如表5年所示。
为满足以上人力需要,该公司考虑以下四种途径:1)招聘工人;2)培训工人;3)辞退多余人员;4)用短工。
每年都有自然离职的人员。
在招聘的工人中,第一年离职的人数特别多,工作一年以上再离当前没有招工,现有的工人都已工作一年以上。
①招工。
假定每年可以招聘的工作数量有一定的限制。
不熟练,半熟练,熟练的每年招工人数限制(单位:人)为500,800,500。
②培训。
每年最多可以将200个不熟练工人培训成半熟练工,每人每年的培训费是400元。
每年将半熟练工培训成熟练工的人数不能超过该年初熟练工人的四分之一,培训半熟练工人成为熟练工人的费用是每人500元。
公司可以把工人降等使用(即让熟练工去做半熟练工或不熟练工的工作等),虽然这样公司不需要支付额外的费用,但被降等使用的工人中有50%会放弃工作而去离去(以上所说的自然离职不包括这种情况)。
③辞退多余人员。
辞退一个多余的不熟练工人要付出200元,而辞退一个半熟练工人或熟练工人要付给他500元。
④额外招工。
该公司总共可以额外招聘150人,对于每个额外招聘的人员,公司要付给他额外的费用(单位:元/人年)为1500,2000,3000。
⑤用短工。
对每类人员,最多可招收50名短工,每个不熟练,半熟练与熟练工的费用(单位:元/人年)为500,400,400。
而每个短工的工作量相当于正常的一半。
(1)若公司目标是尽量减少辞退人员,试提出相应的招工和培训计划。
(2)若公司政策是尽量减少费用,这样额外的费用与上面的政策相比,可以减少多少?而辞退的人员将会增加多少?一、设定决策变量(1)设x表示不熟练的人数;y表示半熟练工人的人数;z表示熟练工人的人数;(2)设i表示第几年,i=1,2,3;(3)设j表示通过哪种方式进行人员的调配。
运筹学实验报告六综合类问题
2018-2019学年第一学期《运筹学》实验报告(六)班级:交通运输171学号:1700000000女姓名: *****日期:2018.12.26实验一:一、问题重述一汽车厂生产小、中、大三种类型的汽车,已知各类型每辆车对钢材、劳动时间的需求、利润以及每月工厂钢材、劳动时间的现有量如下表所示。
试问如何制定月生产计划,使工厂的利润最大。
优的生产计划应作何改变?二、模型假设及符号说明模型一:设该汽车厂生产小、中、大型的汽车数量分别为X1, X2, X3;记总利润为z;模型二:在模型一的符号假设基础上增设y i, y2, y3,分别表示是否生产小、中、大型的汽车,若生产,则为1,若不生产,则为0;三、数学模型模型一:max z 2x1 3x2 4x31.5x i 3x2 5x3 600乩* 280x1250x2400x360000.x2,x30,且均为整数模型二:max z 2x1 3x2 4x3f1 .5 x1 3 x 2 5 x 3600280 x! 250 x 2400 x 360000S.t. x i 1000 y ix i 80 y ii x i均为整数,y j 0或1,i 1,2 ,3四、模型求解及结果分析根据模型一运行结果分析可得:当生产小型车64辆、中型车168辆时,该汽车厂所得利润最大,此时为632万元;根据模型二运行结果分析可分:当生产小型车80辆、中型车150辆时,该汽车厂在该前提下所得利润最大,此时为610万元。
五、附录(程序)模型一运行程序:max=2*x1+3*x2+4*x3; 1.5*x1+3*x2+5*x3<=600;280*x1+250*x2+400*x3<=60000; @gin (x1); @gin (x2); @gin (x3); end模型一运行结果:Global optimal soluti on found. Objective value: Objective bound: In feasibilities:Exte nded solver steps: Total solver iteratio ns:VariableValue Reduced Cost X1 64.00000 -2.000000 X2168.0000 -3.000000 X30.000000-4.000000Row Slack or Surplus Dual Price1632.0000 1.000000 2 0.000000 0.000000 380.00000 0.000000模型二运行程序:max=2*x1+3*x2+4*x3; 1.5*x1+3*x2+5*x3<=600; 280*x1+250*x2+400*x3<=60000; x1>=80*y1; x1<=1000*y1; x2>=80*y2; x2<=1000*y2; x3>=80*y3; x3<=1000*y3;@gi n (x1); @gi n (x2); @gi n (x3); @bin (y1); @bin (y2);@bin (y3);End模型二运行结果:Global optimal soluti on found. Objective value: 610.0000 Objective bou nd: 610.0000 In feasibilities:0.000000632.0000 632.0000 0.000000《运筹学》实验报告Variable Value Reduced Cost X1 80.00000 -2.000000 X2 150.0000 -3.000000 X3 0.000000 -4.000000 Y1 1.000000 0.000000 Y2 1.000000 0.000000 Y30.0000000.000000Row Slack or Surplus DualPrice 1 610.0000 1.000000 2 30.00000 0.000000 3 100.0000 0.000000 4 0.000000 0.000000 5 920.0000 0.000000 6 70.00000 0.000000 7 850.0000 0.000000 8 0.000000 0.000000 90.0000000.000000Exte nded solver steps:Total solver iteratio ns:0 15实验二:一、问题重述某架货机有三个货舱:前舱、中舱、后场。
哈工大运筹学实验报告实验
哈工大运筹学实验报告实验实验一:货物运输问题的数学建模与求解实验目的:1.了解货物运输问题的数学建模方法;2.掌握货物运输问题的线性规划求解方法;3.学会使用运筹学软件求解货物运输问题。
实验原理:货物运输问题属于线性规划问题的一种,其目标是在满足供需平衡和运输容量限制的前提下,使运输成本最小化。
实验内容:1.问题描述:公司有m个供应点和n个需求点,其中每个供应点的供应量为si (i=1,2,…,m),每个需求点的需求量为dj (j=1,2,…,n)。
公司希望通过运输将货物从供应点送到需求点,各供应点到需求点的单位运输成本为aij (i=1,2,…,m; j=1,2,…,n)。
公司希望确定每个供应点与需求点之间的货物运输量xij,以及总运输成本C,使总运输成本最小。
2.数学建模:设xij表示从第i个供应点到第j个需求点的货物运输量,C表示总运输成本,则该问题的数学模型可以描述为:min C = ∑(i=1 to m) ∑(j=1 to n) aij * xijsubject to:∑(j=1 to n) xij = si, i=1,2,…,m∑(i=1 to m) xij = dj, j=1,2,…,nxij ≥ 0, i=1,2,…,m; j=1,2,…,n3.求解方法:利用运筹学软件求解上述线性规划问题,得到最优解。
实验步骤:1.在运筹学软件中新建一个线性规划模型;2.设定决策变量、目标函数和约束条件,并输入相应参数;3.运行求解算法,得到最优解。
实验结果:根据实验步骤,通过运筹学软件求解货物运输问题,得到最优解如下:供应点1到需求点1的运输量为x11=200;供应点1到需求点2的运输量为x12=150;供应点2到需求点1的运输量为x21=100;供应点2到需求点2的运输量为x22=250;总运输成本最小为C=900。
实验总结:通过本次实验,我了解了货物运输问题的数学建模方法,并掌握了线性规划求解的基本步骤。
运筹学实验报告1
运筹学实验报告1《运筹学》课程实验报告一学院:专业:班级:姓名:学号:指导老师:实验报告班级学号姓名课程名称运筹学开课实验室实验时间实验项目名称【实验项目一】线性规划综合性实验实验性质验证性()综合性(√)设计性()成绩指导老师签名实验条件:硬件:计算机,软件:lingo11实验目的及要求:使学生掌握线性规划建模的方法以及至少掌握一种线性规划软件的使用,提高学生应用线性规划方法解决实际问题的实践动手能力。
实验内容:熟悉、了解LINGO系统菜单、工具按钮、建模窗口、求解器运行状态窗口以及结果报告窗口等的环境。
实验过程:1.选择合适的线性规划问题可根据自己的建模能力,从本实验指导书提供的参考选题中或从其它途径选择合适的线性规划问题。
2.建立线性规划数学模型针对所选的线性规划问题,运用线性规划建模的方法,建立恰当的线性规划数学模型。
3.用运筹学软件求解线性规划数学模型应用运筹学软件Lingo对已建好的线性规划数学模型进行求解。
4.对求解结果进行应用分析对求解结果进行简单的应用分析。
实验习题计算:使用lingo来求解下列例题1. MAXZ=2X1+2X2X1-X2≥-1-0.5X1+X2≤2X1,X2≥0解:运用软件lingo11求解线性规划例题1如下:由上述运算结果可知:该线性规划问题的解为无界解,X=(2,3)是它的一个基可行解。
2. MINZ=1000X1+800X2X1≥10.8X1+X2≥1.6X1≤2X2≤1.4X1,X2≥0解:运用软件lingo11求解线性规划例题1如下:由上述运算结果可知:该线性规划问题的最优解X=(1,0.8),目标值Z=1640实验总结:例题1可用图解法检验,从图中可以清楚的看出,该问题可行域无界,目标函数值可以增大到无穷大,该题解为无界解;但在其可行域中存在顶点X=(2,3),故X=(2,3)为该线性规划问题的基可行解。
运筹学实训实验报告
一、实验背景运筹学是一门应用数学的分支,它运用数学模型和算法来解决各种优化问题。
随着现代科技的发展,运筹学在各个领域的应用越来越广泛,如生产管理、物流运输、资源分配等。
为了提高学生运用运筹学知识解决实际问题的能力,我们开展了运筹学实训实验。
二、实验目的1. 熟悉运筹学的基本概念和常用方法;2. 掌握线性规划、整数规划、运输问题、目标规划等运筹学模型;3. 学会运用计算机软件解决实际问题;4. 培养学生的团队合作精神和创新意识。
三、实验内容本次实验主要包括以下内容:1. 线性规划:以生产计划问题为例,建立数学模型,并运用Excel规划求解器求解最优解。
2. 整数规划:以人员排班问题为例,建立数学模型,并运用Lingo软件求解最优解。
3. 运输问题:以物流配送问题为例,建立数学模型,并运用Lingo软件求解最优解。
4. 目标规划:以投资组合问题为例,建立数学模型,并运用Lingo软件求解最优解。
四、实验步骤1. 线性规划实验(1)问题分析:某企业需要生产甲、乙两种产品,已知生产甲、乙两种产品所需的原料、劳动力及设备等资源消耗量,以及产品的售价和利润。
(2)模型建立:根据问题分析,建立线性规划模型,目标函数为最大化利润,约束条件为资源消耗量不超过限制。
(3)求解:运用Excel规划求解器求解最优解。
2. 整数规划实验(1)问题分析:某公司需要安排员工值班,要求每天至少有3名员工值班,且员工值班时间不能超过一周。
(2)模型建立:根据问题分析,建立整数规划模型,目标函数为最小化员工值班成本,约束条件为员工值班时间不超过限制。
(3)求解:运用Lingo软件求解最优解。
3. 运输问题实验(1)问题分析:某物流公司需要将货物从A、B两个仓库运送到C、D两个销售点,已知各仓库的货物量、各销售点的需求量以及运输成本。
(2)模型建立:根据问题分析,建立运输问题模型,目标函数为最小化运输成本,约束条件为各仓库的货物量不超过需求量。
运筹学综合性实验报告
ni 200 ( xi1 xi 2 ) 2 x ik 0, i 1,2,3,4,5,6; k 1,2
(二)用 LINGO 中来求解线性规划问题 打开 LINGO,创建一个新文件,输入以下代码[备注:其中@gin 中是对变量进行整数约束] :
max=30*(y1+y2+y3+y4+y5+y6)-1500*(p1+p2+p3+p4+p5+p6)-1000*(d1+d2+d3+d4+d5+d6)-5*(kc 1+kc2+kc3+kc4+kc5+kc6)-2000*(x1+x2+x3+x4+x5+x6); x0=4; p1-d1=x1-x0; p2-d2=x2-x1; p3-d3=x3-x2; p4-d4=x4-x3; p5-d5=x5-x4; p6-d6=x6-x5; kc0=0; kc1=y1+kc0-500; kc2=y2+kc1-600; kc3=y3+kc2-300; kc4=y4+kc3-400; kc5=y5+kc4-500; kc6=y6+kc5-800; y1<=100*x1;y2<=100*x2;y3<=100*x3;y4<=100*x4;y5<=100*x5;y6<=100*x6;y1+y2+y3+y4+y5+y 6<=3100; @gin(y1);@gin(y2);@gin(y3);@gin(y4);@gin(y5);@gin(y6);@gin(x1);@gin(x2);@gin(x3);@ gin(x4);@gin(x5);@gin(x6);
运筹学实践教学报告模板(3篇)
第1篇一、引言运筹学作为一门应用广泛的学科,其核心在于运用数学模型和算法解决实际问题。
为了更好地理解和掌握运筹学的理论和方法,本次实践教学报告以XX项目为例,详细阐述运筹学在实际问题中的应用过程。
二、项目背景与目标1. 项目背景XX项目是XX公司为提高生产效率、降低成本而提出的一个优化问题。
公司现有生产线,由于设备老旧、工艺流程不合理等原因,导致生产效率低下,成本较高。
为了解决这一问题,公司决定运用运筹学方法进行生产线优化。
2. 项目目标通过运筹学方法,对XX项目生产线进行优化,实现以下目标:- 提高生产效率,降低生产周期;- 降低生产成本,提高企业经济效益;- 优化生产线布局,提高生产线柔性。
三、运筹学方法选择与应用1. 方法选择针对XX项目的特点,本次实践选择了以下运筹学方法:- 线性规划(Linear Programming,LP)- 整数规划(Integer Programming,IP)- 模拟退火算法(Simulated Annealing,SA)2. 方法应用(1)线性规划首先,根据XX项目实际情况,建立了线性规划模型。
模型中包含决策变量、目标函数和约束条件。
通过求解线性规划模型,得到了最优的生产方案,包括各设备的生产能力分配、生产顺序安排等。
(2)整数规划由于部分设备的生产能力为整数,因此采用整数规划方法对模型进行改进。
通过求解整数规划模型,进一步优化了生产方案,使得设备利用率达到最大化。
(3)模拟退火算法为了提高生产方案的鲁棒性,采用模拟退火算法对优化后的生产方案进行全局搜索。
通过模拟退火算法,得到了一组更加优化的生产方案,提高了生产线的柔性。
四、结果与分析1. 结果经过运筹学方法的应用,XX项目生产线优化取得了以下成果:- 生产效率提高了XX%;- 生产周期缩短了XX天;- 生产成本降低了XX%;- 生产线柔性得到了显著提高。
2. 分析(1)线性规划方法的应用使得生产线设备利用率得到最大化,从而提高了生产效率;(2)整数规划方法的应用确保了设备生产能力的合理分配,避免了生产过程中的资源浪费;(3)模拟退火算法的应用使得生产方案具有更好的鲁棒性,提高了生产线的柔性。
运筹学实验报告
运筹学实验报告实验内容:整数规划问题的建模和求解。
案例4.3“建业银行职员的上班安排”。
一、问题提出南平市青山区建业银行分理处每周七天营业,从周一到周日每天值班人员数见下表:试回答:a)银行职员每周上班5天,休息两天,但具体哪几天上班由银行排定。
领导保证每周六或周日两个公休日内至少安排一天休息,该分理处至少配备多少名职员才能满足值班需要;b)因排定的值班表有的职员每周六、日均得到休息,有的只能安排一个公休日休息,显得不公。
于是研究一个值班的倒班计划,做到在一个周期内,每名职工公休日休息的天数一致,问如何才能做到这一点。
二、问题简述从该银行每天需要值班人数表可看出:七天所需职员人数分别为15.17.14.14.15.16.18。
每个职员每周值五个班。
为了满足值班需要,并且公平合理。
现制定以下两种方案,通过建立整数规划模型并求解,分析各种方案的最佳安排方式。
方案一:每个银行职员每周上班5天,休息2天,且每周末至少休息1天。
方案二:每个银行职员每周上班5天,休息2天,每周末至少休息1天,且每名职工周末休息天数一致。
三、符号说明i周几ai周几不上班人数t银行职员数四、问题分析方案一:每名职员在周六、周日两天内至少休息一天,每周共上班5天。
由每名职员在周六、周日两天内至少休息一天可知,周六周日休息人数a6+a7>=t。
而通过每周共上班5天,a i(i=1、2...7)=2t。
而由表格可知因此综上,可列出方程。
可推出方案二:每名职员在周六、周日两天内至少休息一天且休息天数一致。
每名职员每周共上班5天。
由每名职员在周六、周日两天内至少休息一天且休息天数一致可知,任何一名职员只能在周末休息一天,否则就无人上班了。
因此,遇上一体的唯一区别在于,将a6+a7>=t改为a6+a7=t。
五、建模及求解方案一:输入计算结果方案二:决策变量银行职员数,表示为t.目标函数min=t;t-a1>=15;约束条件t-a2>=17;t-a3>=14;t-a4>=14;t-a5>=15;t-a6>=16;t-a7>=18;a6+a7=t;a1+a2+a3+a4+a5+a6+a7=2*t;输入计算结果。
最新运筹学实践报告加工问题的(优质5篇)
最新运筹学实践报告加工问题的(优质5篇)(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如职场文书、公文写作、党团资料、总结报告、演讲致辞、合同协议、条据书信、心得体会、教学资料、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, this store provides various types of classic sample essays for everyone, such as workplace documents, official document writing, party and youth information, summary reports, speeches, contract agreements, documentary letters, experiences, teaching materials, other sample essays, etc. If you want to learn about different sample formats and writing methods, please pay attention!最新运筹学实践报告加工问题的(优质5篇)“报告”使用范围很广,按照上级部署或工作计划,每完成一项任务,一般都要向上级写报告,反映工作中的基本情况、工作中取得的经验教训、存在的问题以及今后工作设想等,以取得上级领导部门的指导。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运筹学综合实验报告本次实验中,我们使用了运筹学的方法来解决了一个经典的优化问题,即整数线性规划问题(Integer Linear Programming,简称ILP)。
一、实验目的本次实验的主要目的是熟悉ILP的求解过程,了解ILP在实际问题中的应用,以及掌握使用现代优化软件Gurobi来求解ILP的方法。
二、实验原理1. 整数线性规划问题整数线性规划问题是在所有线性规划问题中的一个非常重要的子集。
它将优化目标函数的线性组合与整数限制相结合。
一个典型的ILP问题可以被描述为:最大化(或最小化)目标函数:\max(\min) \sum_{j=1}^{n}c_j x_j满足如下的约束条件:\sum_{j=1}^{n}a_{ij} x_j \leq b_i,\ i=1,2,\cdots,mx_j \geq 0,\ j=1,2,\cdots,nx_j \in Z,\ j=1,2,\cdots,nx_j表示自变量,c_j表示目标函数中的系数,a_{ij}表示第i个约束条件中x的系数,b_i表示约束条件的右侧常数,m表示约束条件的数量,n表示变量的数量。
最后两个约束条件要求自变量只能是整数。
2. Gurobi优化软件Gurobi是一个商业优化软件,经过多年的发展,已成为当前最流行的数学优化软件之一。
Gurobi支持多种数学优化方法,包括线性规划、非线性规划、混合整数规划、二次规划等。
Gurobi使用了现代算法来实现高效的求解效果,是工业和学术界备受推崇的优化软件。
三、实验内容1. 利用Gurobi求解整数线性规划问题我们使用Gurobi来求解如下的整数线性规划问题:\max\ \ 2x_1 + 3x_2 + 7x_3满足如下的约束条件:x_1 + x_2 + x_3 \leq 6x_1 - x_2 + x_3 \leq 4x_1, x_2, x_3 \in Z,\ x_1 \geq 0,\ x_2 \geq 0,\ x_3 \geq 0我们使用Python代码来实现该问题的求解过程:```pythonimport gurobipy as gbmodel = gb.Model("integer linear programming")# Create variablesx1 = model.addVar(vtype=gb.GRB.INTEGER, name="x1")x2 = model.addVar(vtype=gb.GRB.INTEGER, name="x2")x3 = model.addVar(vtype=gb.GRB.INTEGER, name="x3")# Set objectivemodel.setObjective(2*x1 + 3*x2 + 7*x3, gb.GRB.MAXIMIZE)# Add constraintsmodel.addConstr(x1 + x2 + x3 <= 6)model.addConstr(x1 - x2 + x3 <= 4)# Optimize modelmodel.optimize()# Print resultsprint(f"Maximum value: {model.objVal}")print(f"x1 = {x1.x}")print(f"x2 = {x2.x}")print(f"x3 = {x3.x}")```运行该代码,得到的输出结果为:```Optimize a model with 2 rows, 3 columns and 6 nonzerosVariable types: 0 continuous, 3 integer (0 binary)Coefficient statistics:Matrix range [1e+00, 1e+00]Objective range [2e+00, 7e+00]Bounds range [0e+00, 0e+00]RHS range [4e+00, 6e+00]Found heuristic solution: objective 9.0000000Presolve time: 0.00sPresolved: 2 rows, 3 columns, 6 nonzerosVariable types: 0 continuous, 3 integer (0 binary)Root relaxation: objective 1.500000e+01, 2 iterations, 0.00 secondsNodes | Current Node | Objective Bounds | WorkExpl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time0 0 15.00000 0 1 9.00000 15.00000 66.7% - 0sH 0 0 14.0000000 15.00000 7.14% - 0s0 0 15.00000 0 1 14.00000 15.00000 7.14% - 0sExplored 1 nodes (2 simplex iterations) in 0.03 secondsThread count was 4 (of 4 available processors)Solution count 2: 14 9Optimal solution found (tolerance 1.00e-04)Best objective 1.400000000000e+01, best bound 1.400000000000e+01, gap 0.0000%Maximum value: 14.0x1 = 2.0x2 = 4.0x3 = 0.0```经过Gurobi的求解,我们得到了最大值为14,同时x_1=2, x_2=4, x_3=0时取到最优值。
2. 利用Gurobi求解生产调度问题我们考虑一个实际的生产调度问题。
假设一家工厂生产两种产品,产品A和产品B。
它需要在下个月内处理以下的订单:| 产品 | 数量 || :--: | :--: || A | 15 || B | 20 |该工厂有两条生产线,每条生产线在一个小时内可以生产不同数量的产品:| 生产线 | 产品A/小时 | 产品B/小时 || :----: | :--------: | :--------: || 1 | 1 | 2 || 2 | 3 | 1 |每个小时的生产线成本如下:| 生产线 | 成本 || :----: | :--: || 1 | 5 || 2 | 8 |工厂希望以最小化成本的方式制造所有产品,同时满足生产能力限制和订单要求。
我们可以把这个问题抽象为一个整数线性规划问题。
我们定义x_{ij}表示在第i条生产线上,产生1个产品j所需要的小时数。
于是,我们需要寻找以下标准来最小化成本:\min\ 5(x_{11}+x_{21})+8(x_{12}+x_{22})满足以下约束条件:x_{11}+x_{12}\geq 15x_{21}+x_{22}\geq 20x_{11}+3x_{21}\leq 402x_{12}+x_{22}\leq 45x_{11},x_{21},x_{12},x_{22}\geq 0x_{11},x_{21},x_{12},x_{22}\in Z我们使用Python代码来实现该问题的求解过程:```pythonimport gurobipy as gbmodel = gb.Model("production scheduling")x11 = model.addVar(vtype=gb.GRB.INTEGER, name="x11")x12 = model.addVar(vtype=gb.GRB.INTEGER, name="x12")x21 = model.addVar(vtype=gb.GRB.INTEGER, name="x21")x22 = model.addVar(vtype=gb.GRB.INTEGER, name="x22")model.setObjective(5*(x11+x21)+8*(x12+x22), gb.GRB.MINIMIZE)model.addConstr(x11+x12 >= 15)model.addConstr(x21+x22 >= 20)model.addConstr(x11+3*x21 <= 40)model.addConstr(2*x12+x22 <= 45)model.optimize()print(f"Minimum cost: {model.objVal}")print(f"x11 = {x11.x}")print(f"x12 = {x12.x}")print(f"x21 = {x21.x}")print(f"x22 = {x22.x}")```运行该代码,得到的输出结果为:```Optimize a model with 4 rows, 4 columns and 8 nonzerosVariable types: 0 continuous, 4 integer (0 binary)Coefficient statistics:Matrix range [1e+00, 3e+00]Objective range [5e+00, 8e+00]Bounds range [0e+00, 0e+00]RHS range [1e+01, 4e+01]Loaded MIP start from previous solve with objective 0Presolve removed 0 rows and 2 columnsPresolve time: 0.00sPresolved: 4 rows, 2 columns, 8 nonzerosVariable types: 0 continuous, 2 integer (0 binary)Root relaxation: objective 4.850000e+01, 1 iterations, 0.00 seconds Explored 0 nodes (1 simplex iterations) in 0.00 secondsThread count was 4 (of 4 available processors)Solution count 1: 48.5Optimal solution found (tolerance 1.00e-04)Best objective 4.850000000000e+01, best bound 4.850000000000e+01, gap 0.0000% Minimum cost: 48.5x11 = 0.0x12 = 15.0x21 = 20.0x22 = 5.0```经过Gurobi的求解,我们得到了最小化的成本为48.5,同时在x_{11}=0,x_{21}=20,x_{12}=15,x_{22}=5时满足约束条件。