[python]线性规划作图及求解
[python]线性规划作图及求解
- 前言
- 一、最优化题目(求最大值)
- 二、求解线性规划
- 1.使用fill_between()函数画线性规划
- 2.数值求解
- 三、参考资料
前言
第一次写博客,理论与实践相结合。
一、最优化题目(求最大值)
maxZ=70x1+30x2max\ \ \ Z = 70x_1+30x_2\\ max Z=70x1+30x2
x1≥0,x2≥0x_1 ≥ 0 ,x_2 ≥ 0\\ x1≥0,x2≥0
二、求解线性规划
1.使用fill_between()函数画线性规划
fill_between()函数是填充两条线条之间的区域。但现有3条线,先将其中2条线定义在一个函数中,成为1个线条(两两组合两组,再将这两组组合),再由第3条线约束进行区域的填充。
plt.fill_between(x,0,y7, where=y7<=y3,facecolor=‘grey’, alpha=0.5)
x:第一个参数表示覆盖的区域,我直接复制为x,表示整个x都覆盖
0:表示覆盖的下限
y7:表示覆盖的上限是y7这个曲线
where: 对覆盖区域进行条件判断和约束
facecolor:覆盖区域的颜色
alpha:覆盖区域的透明度[0,1],其值越大,表示越不透明
将2个线条定义为1个,用numpy中的minimum()函数和maximun()函数
代码如下:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inlinex = np.linspace(0.0,240.0,30)y1 = -0.33*x + 60
y2 = -1*x + 90
y3 = -3*x + 240y4 = np.minimum(y1, y2)
y5 = np.minimum(y2, y3)
y7 = np.minimum(y4, y5)plt.fill_between(x,0,y7, where=y7<=y3,facecolor='grey', alpha=0.5)plt.plot(x, y1, label=r'$y = -0.33*x+60$')
plt.plot(x, y2, label=r'$y=-1*x+90$')
plt.plot(x, y3, label=r'$y=-3*x+240$')plt.xlim((0.0, 240.000))
plt.ylim((0.0, 240.000))
plt.xlabel(r'$x$')
plt.ylabel(r'$y$')
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
plt.show()
图解如下:
2.数值求解
代码如下(示例):
import numpy as np
from scipy.optimize import linprogA = np.array([[1, 3], [1, 1], [3, 1]])
b = np.array([180, 90, 240])
c = np.array([-70, -30])res = linprog(c, A_ub = A, b_ub = b)print('Optimal value:', round(res.fun * (-1), ndigits = 2),'\nx values:', res.x,'\nNumber of iterations performed:', res.nit,'\nStatus:', res.message)
结果如下:
Optimal value: 5700.0
x values: [74.9999996 14.99999987]
Number of iterations performed: 5
Status: Optimization terminated successfully.
三、参考资料
- https://blog.csdn.net/Poul_henry/article/details/88936637
- https://blog.csdn.net/kabuto_hui/article/details/84979606
- 求解过程参考了一位大佬的文章,现在找不到了,后面找到了补上
[python]线性规划作图及求解相关推荐
- 线性规划问题及单纯形法-线性规划问题的求解方法
线性规划问题的求解方法 两种方法 1.图解法(两个变量使用直角坐标.三个变量使用立体坐标) 2.单纯形法(适用于任意变量,但需将一般形式编程标准形式) 2图解法 建立直角坐标(x1,x2>=0) ...
- Python线性规划库Pulp的详解及应用示例
Python线性规划库Pulp的详解及应用示例 线性规划是一种常见的优化方法,在商业.工程等领域有着广泛的应用.而Python作为一种高效.灵活的编程语言,也提供了丰富的线性规划库可供选择.本文将介绍 ...
- python线性规划算法_线性规划的算法分析
本章涉及知识点 1.线性规划的定义 2.可行区域.目标函数.可行解和最优解 3.转线性规划为标准型 4.转线性规划为松弛型 5.单纯形算法的思想和例子 6.避免退化-Bland规则 7.广义单纯形算法 ...
- em算法python代码_EM 算法求解高斯混合模型python实现
注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...
- pythonchar中的拟合方法_在python中利用numpy求解多项式以及多项式拟合的方法
构建一个二阶多项式:x^2 - 4x + 3 多项式求解 >>> p = np.poly1d([1,-4,3]) #二阶多项式系数 >>> p(0) #自变量为0时 ...
- python turtle绕原点旋转_「加德老师与小朋友们的编程之旅」Python海龟作图(上)
加德老师寄语: 小朋友们,家长朋友们,大家好! [加德老师与小朋友们的编程之旅]今天迎来第二节课--用python进行海龟作图(上) Python被誉为现今人工智能第一语言,适合9岁以上孩子进行编程入 ...
- 管理运筹学软件计算机解咋看,管理运筹学-线性规划的计算机求解ppt课件.ppt
<管理运筹学-线性规划的计算机求解ppt课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<管理运筹学-线性规划的计算机求解ppt课件.ppt> ...
- python实现一元二次方程求解
python实现一元二次方程求解 import random a=float(input("请输入a: "))b=float(input("请输入b: "))c ...
- 线性规划两阶段求解方法
想快速掌握线性规划两阶段求解方法,强烈推荐博文<三言两语讲清楚线性规划单纯形方法>. 百度百科给了下面一个例子,感觉其解法不容易看明白原理,换一种解释方法,应该很容易看明白两阶段法的原理. ...
最新文章
- LeetCode() Largest Number
- Java final关键字,常量的定义
- hihocoder-1615-矩阵游戏II
- php mvc cms企业站,Phpcms V9程序目录结构及MVC简析
- 【Swift学习】Swift编程之旅---ARC(二十)
- Mybatis源码阅读(四):核心接口4.1——StatementHandler
- jdk卸载不干净怎么办_【实用】流氓软件卸载不干净?
- java ftp遍历所有子文件_Java 遍历指定文件夹及子文件夹下的文件
- Perl 6 真的太烦人了?
- 参数中带有“”符号问题
- 《机电传动控制》第六周学习笔记
- HTML期末学生大作业-最新QQ音乐、网易云音乐、酷狗音乐、虾米音乐、咪咕音乐网站html+css+javascript
- Adb连不上夜神模拟器的原因adb devices显示设备信息为空
- android的平台签名工具,《安卓开发》APK签名工具使用方法
- matlab求点,MATLAB求两点中点
- OkHttp优点及工作原理
- 广义表C/C++实现详解
- 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口
- Java设计模式—模板模式(Template)
- java long转日期,long转String
热门文章
- python3-xlwt-Excel设置表格基础(字体颜色 背景颜色 设置边框 边框颜色 冻结窗口 字体大小 字体高度 字体加粗 下划线 斜体字 单元格对齐方式 自动换行 删除线 超链接 插入公式)
- FL Studio21傻瓜式编曲音乐编辑器FL水果软件
- 电子元器件自动化测试系统|大功率分立器件测试系统NSAT-2000
- 计算机stem案例,【stem教育项目教学案例】_STEM教育理念下的“三维创意设计”课程教学案例...
- 【RED-V】驱动 PWM 实现呼吸灯
- java计算图片相似度_图片相似度比较--算法
- 计算机视觉面试题总结
- ZOJ - 1203 Swordfish(最短路)
- Ubuntu配置GoldenDict词典翻译-划线翻译
- java如何读取.properties配置文件