运筹学综合实验报告

合集下载

运筹学实验报告

运筹学实验报告

运筹学实验报告姓名:学号:班级:指导老师:实验内容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篇)

运筹学实践教学报告范文(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)

运筹学实验报告(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)

运筹学实验报告(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)的农用化肥。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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时满足约束条件。

相关文档
最新文档