线性规划问题的求解方法

两种方法
1.图解法(两个变量使用直角坐标、三个变量使用立体坐标)
2.单纯形法(适用于任意变量,但需将一般形式编程标准形式)

2图解法
建立直角坐标(x1,x2>=0),图中阴影部分及边界上的点均为其解,是由约束条件来反映的。
将约束条件画完,会形成一个区域,该区域即约束条件,所限定的可行域范围,目标函数在可行域范围内移动,找到相交的部分,找到最大值或最小值,有可能最值,即在线段的端点处,也在线段的内部。

例题1:

线性规划问题 java 求解 线性规划问题求解方法_线性规划问题 java 求解


(1)首先,作图,画出x1和x2两个变量的坐标系,非负变量应该>=0,所以应该是在坐标轴的第二区域。然后再画约束,画第一个约束,判断<=12【对于这条线段来说,<12处在下方,>12在上方,=12在这条直线上。可以通过上下平移这条直线,使其y值等于任何一个值,那么通过直线上下平移,可以取到平面内所有点的。所以验证<12是在上方还是下方,应该随便找一个不在直线上的点,带入直线公式,看值是>12,还是<12】,那么应该在线段的下方,因为可以将(0,0)带入发现小于12

线性规划问题 java 求解 线性规划问题求解方法_线性代数_02

(2)将所有的约束都画出来,那么会得到一个凸集,即蓝色所围成的区域。

线性规划问题 java 求解 线性规划问题求解方法_算法_03


凸集的特点是:空间内的任意两点的连线都在这个区域内。会得到一个可行域。下面图片中阴影部分为可行集

线性规划问题 java 求解 线性规划问题求解方法_线性规划问题 java 求解_04


(3)将目标函数画出来,作为标准,向上或向下平移,得到最优解。下图中红色的线是目标函数,最优解是(4,2)处,最优解是Z=14。

线性规划问题 java 求解 线性规划问题求解方法_线性代数_05


可以得到以下结论,如果线性规划问题有最优解,那么通常会在可行集的边缘处得到。

例题2、

线性规划问题 java 求解 线性规划问题求解方法_线性代数_06


最优解和可行域边缘处重合,那么有无穷多最优解。

例题3、

线性规划问题 java 求解 线性规划问题求解方法_最优解_07


目标函数向上平移的时候,没有找到最优值,即是无界解。

例题4、

线性规划问题 java 求解 线性规划问题求解方法_线性代数_08


此约束形成的区域,没有交集,所以他是无可行解。(无可行域)

练习1.下面的是练习,你可以自己做,之后将可行域得到。找到最优解。

线性规划问题 java 求解 线性规划问题求解方法_线性代数_09


线性规划性质

(1)线性规划问题的可行域都是凸集。【若有可行域,那么一定是凸集】。

如果集合C中任意两个点X1和X2,其连线上点aX1+(1-a)X2也都是C中的点,则C为凸集。【集合C中的任意两点的连线,其连线上的点都是C中的点,则C为凸集】

线性规划问题 java 求解 线性规划问题求解方法_python_10

(2)如果线性规划存在最优解,则最优解一定是在凸集的某一顶点实现。(这个顶点可能是一个点【最优解】,或者是一个线段【无穷多最优解】)