前言
最近比较忙,也是给自己放放假,所以就没有写什么文章。把最近的课程作业拿出来跟大家分享分享吧。主要就是用Python图解法线性规划的问题,用的是motplotlib的fill_between函数。
第一题
解 : 画出坐标系,以变量x1为横坐标轴,x2为纵坐标轴作为平面直角坐标系,并适当选取单位坐标长度,约束条件规定x1,x2大于0,所以绘图时只画出第一象限。
图示约束条件,找出可行域。 约束条件是一个不等式,代表的是直线2x1+3x2=12 为边界的左下方的平面,同理我们将第一个约束条件化成-2x1+x2=2 为边界的左下方的平面,满足上述两个条件且x1,x2大于0即是可行域,即下图阴影部分
作出目标函数等值线。 目标函数z=-x1-3x2中,z是待定的值,随着z的变化,x2=-1/3x1-1/3z 是以z为参数,斜率为-1/3 的一族平行线,当z值由小变大时,得一族平行线,即目标函数等值线。直线x2=-1/3x1-1/3z ,z为参数,沿其法线方向向左下方移动时,z值越大。
确定最优解。 因最优解是可行域中使目标函数值达到最大的点,因此x1,x2的取值范围只能从图中阴影部分中寻找,从上图看出,当代表目标函数的那条直线向左下方移动时,z值逐渐增大,一直移动到当目标函数直线与约束条件包围的阴影部分相切为止,切点就是最优解的点。本题中目标函数与阴影部分的切点为(0,0),于是可得最大值z=-1 0+(-3) 0=0。因此该问题有唯一最优解。
第二题
第二题和第一题类似,我就不写过程了。直接给大家看代码
因此该问题有无穷多最优解。黑色圈里的就是解。
第三题
第三题介绍两种方法:图解法和基础的单纯形法
1. 图解法
画出坐标系,以变量x1为横坐标轴,x2为纵坐标轴作为平面直角坐标系,并适当选取单位坐标长度,约束条件规定x1,x2大于0,所以绘图时只画出第一象限。
图示约束条件,找出可行域。 约束条件是一个不等式,代表的是直线-2x1+x2=2 为边界的左下方的平面,同理我们将第一个约束条件化成2x1+3x2=12 为边界的左下方的平面,满足上述两个条件且x1,x2大于0即是可行域,即下图阴影部分
作出目标函数等值线。 目标函数z=-x1+x2中,z是待定的值,随着z的变化,x2=-1/3x1+1/3z 是以z为参数,斜率为-1/3 的一族平行线,当z值由小变大时,得一族平行线,即目标函数等值线。直线x2=-1/3x1+1/3z,z为参数,沿其法线方向向右上方移动时,z值越大。
确定最优解。 因最优解是可行域中使目标函数值达到最大的点,因此x1,x2的取值范围只能从图中阴影部分中寻找,从上图看出,当代表目标函数的那条直线向右上方移动时,z值逐渐增大,一直移动到当目标函数直线与约束条件包围的阴影部分相切为止,切点就是最优解的点。本题中目标函数与阴影部分的切点为(3/4,7/2),于是可得最大值z=11.25。也是一个唯一最优解
2. 单纯形法
结语
我一直认为Python很全能,有很多的库和包。可以支持我做很多事情。所以这次我选择用Python来做这次作业,又探索出一个我未知的领域,其实挺高兴的,未来希望能更加充分的认识Python,了解Python,使用Python。我爱Python......