需要用到scipy库里面的函数

scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method=‘simplex’, callback=None, options=None)

代码

from scipy import optimize as op
import numpy as np
c=np.array([2,3,-5])
A_ub=np.array([[-2,5,-1],[1,3,1]])
B_ub=np.array([-10,12])
A_eq=np.array([[1,1,1]])
B_eq=np.array([7])
x1=(0,7)
x2=(0,7)
x3=(0,7)
res=op.linprog(-c,A_ub,B_ub,A_eq,B_eq,bounds=(x1,x2,x3))
print(res)

c指的应该是要求最大值的函数的系数数组,A_ub是应该是不等式未知量的系数矩阵,仔细观察的人应该发现,为什么第一行里面写的是[-2,5,-1]而不是[2,5,-1]呢,应该要与图里对应才对啊,原来这不等式指的是<=的不等式,那如果是>=呢,乘个负号就行了。A_eq就是其中等式的未知量系数矩阵了。B_ub就是不等式的右边了,B_eq就是等式右边了。bounds的话,指的就是每个未知量的范围了。我们看一下结果

     fun: -14.571428571428571message: 'Optimization terminated successfully.'nit: 2slack: array([3.85714286, 0.57142857, 6.42857143, 7.        , 0.        ])status: 0success: Truex: array([6.42857143, 0.57142857, 0.        ])

批量做线性规划,每次约束条件参数有变化

数据部分截图
这是一道电网经济优化调度题。这里不讲解

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
from scipy.optimize import linprog#线性规划包
#读取数据
file=pd.read_csv('微电网日前经济调度.csv',encoding='utf-8')#x[0]  # 风机实时接入功率
# x[1]  # 光伏实时接入功率
# x[2] 购电实时功率
# x[3] 售电实时功率shuju=[]#存放目标值
PF=[]#存放风机实时功率
PS=[]#存放光伏实时功率
PN=[]#存放主网实时功率#遍历每一行
for index, row in file.iterrows():Pbuy = row['购电价格']Psell = row['售电价格']PF_max = row['风机kW']PS_max = row['光伏kW']PL = row['负荷kW']"---目标函数___"#(风机购电成本+光伏购电成本+微电网向主网购电费用-微电网向主网售电费用)#c(P0.52*x[0]+0.75*x[1]+Pbuy*x[2]-Psell*x[3])c=np.array([0.52,0.75,Pbuy,-Psell])"---不等式约束___,这里放入上下限中,不在这里书写"#A x[0]<=PF_max风机接入实时功率小于风机的最大功率# -x[0]<= 0风机接入实时功率大于等于0# x[1]<=PS_max 光伏接入的实时功率小于光伏的最大功率#-x[1]<=0光伏接入的实时功率大于0#A_ub=np.array([[1,0,0,0],[-1,0,0,0],[0,1,0,0],[0,-1,0,0]])#B_ub=np.array([PF_max,0,PS_max,0])"---等式约束___"#风机实时接入功率 + 光伏实时接入功率  +实时售电功率 = 实时负荷+实时购电功率# x[0]  # 风机实时接入功率# x[1]  # 光伏实时接入功率# x[2] 购电实时功率# x[3] 售电实时功率#x[0]+x[1]+x[2]-x[3]=PLA_eq=np.array([[1,1,1,-1]])B_eq = np.array([PL])x0 = (0, PF_max)#风机实时接入功率x1 = (0, PS_max)#光伏实时接入功率x2 = (0, 150)#购电实时功率x3 = (0, 150)#售电实时功率res = linprog(c, A_ub=None, b_ub=None, A_eq=A_eq,  b_eq=B_eq,bounds=(x0,x1,x2,x3))x=res.xshuju.append(res.fun)PF.append(x[0])PS.append(x[1])PN.append(PL-x[0]-x[1])#print(res.fun)print('总的费用',np.array(shuju).sum()*0.25)plt.plot(file['负荷kW'],'b--',label='负荷')
plt.plot(np.array(PF),'r-',label='风机实时功率')
plt.plot(np.array(PS),'g-.',label='光伏实时功率')
plt.plot(np.array(PN),'c:',label='与主网交换功率')
plt.ylabel('P/kW')
plt.xlabel('t/0.25h')
plt.legend()
plt.show()

更多优化算法见链接
python求解带约束目标优化问题(非线性规划,粒子群,遗传,差分进化)

作者:电气-余登武。写作不容易,点个赞再走。

python批量做线性规划(每次的约束条件参数有变换)相关推荐

  1. python批量读取文件赋值给一个参数_求助一个Python 循环读取文件,并对读到的字符串进行赋值,然后进一步生成json file 的方法。...

    求助一个Python 循环读取文件,并对读到的字符串进行赋值,然后进一步生成json file 的方法. 本来想用shell写,利用while read line do --done 但是这样json ...

  2. python批量读取文件赋值给一个参数_python txt中的文件,逐行读取,每行赋值给变量...

    展开全部 我的方案应该可以完美解决你的问题.首先,你得找一个.txt的文本,我是.ini,都一样62616964757a686964616fe59b9ee7ad9431333431373935,有几行 ...

  3. python表情包多样化聊天室_Python | 信不信我分分钟批量做你大堆的表情包?

    作者 | 依然很拉风 作为一个数据分析师,应该信奉一句话----"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态----表情包!!!! 表情包不仅仅是一种符 ...

  4. Python数据分析入门--线性规划和非线性规划学习笔记

    文章目录 一.线性规划简介 二.线性规划常用求解方法 三.线性规划实现流程 1. 明确问题和变量 2. 建立数学模型 四. Python实现线性规划 五. 非线性规划简介 六. 非线性规划常用求解方法 ...

  5. Sqlmap速查表/功能移植/Python批量检测SQL注入

    title: Sqlmap速查表与Python进行功能移植 copyright: true top: 0 date: 2021-02-27 11:59:00 tags: [扫描注入,注入,sqlmap ...

  6. 疫情过去女朋友想去重庆玩,python批量爬取小猪短租重庆民宿信息

    疫情过去女朋友想去重庆玩,python批量爬取小猪短租重庆民宿信息 随着时间的流逝,在中国共产党的领导,全国人民的共同努力下,疫情逐渐受到了控制,逐渐好转,复工,开学有望.最近在和女朋友的闲聊当中得知 ...

  7. python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)

    python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码 一.前言 今天的低价单孔摄像机(照相机)会给图像带来很多畸变.畸变主要有两 种:径向畸变和切想畸变.如下图所示,用 ...

  8. json字段顺序读取 python_如何利用Python批量读取视频文件的时间长度?

    本期的主题是利用Python来实现对视频文件时间长度的读取. 在学习编程语言时,相比较于通过书本来学习知识,我更喜欢通过观看学习视频的方式来进行学习,通过主讲老师的讲解,我能很直观且快速的了解一些知识 ...

  9. Supporting Python 3(支持python3)——为Python 3做准备

    2019独角兽企业重金招聘Python工程师标准>>> 为Python3作准备 在开始添加Python 3的支持前,为了能够尽可能地顺利过度到Python 3,你应该通过修改对2to ...

最新文章

  1. oracle数据连接出现 login denied 问题
  2. 用mysql命令还原_mysql——数据还原——使用mysql命令还原
  3. 智慧赋能黔货出山 丰收节交易会·李喜贵:贵州农业数字化
  4. Spring整合web开发
  5. AIX 环境下遇到Device Busy问题
  6. 【谈谈IO】BIO、NIO和AIO
  7. ubuntu 发数据给usb_【奇怪的知识】USB 镜像刻录知识点
  8. dell服务器怎么用u盘系统安装win7系统教程,戴尔DellU盘重装系统操作教程
  9. 自定义VB程序加密方案
  10. 32位微型计算机中的32级的4,2013年计算机等级考试一级微机知识预测题(4)
  11. linux下软件安装的四种方法
  12. 网易云接口加直链下载vip歌曲
  13. pubg微信登录服务器维护,全军出击微信登录不了怎么办
  14. 前端js常用剪贴板(复制粘贴)操作和应用,以及navigator.clipboard新粘贴板API使用
  15. python报错ImportError: cannot import name ‘Image‘ from ‘PIL‘ 的时候大多数情况下是由于PIL版本和当前python的版本出现了不兼容
  16. 一篇文章基础HTML总结
  17. 在线英文打字测试(php)
  18. Python 1~500 求和(循环遍历求和,高斯求和,定义函数求和)
  19. oracle里面cat,Oracle 12c 中推荐使用 catcon.pl 执行SQL脚本
  20. shell脚本之脚本案例

热门文章

  1. Tampermonkey油猴插件各种浏览器下载教程【chrome、firefox、Edge、360、QQ、Safari等】
  2. Windows——Modern Standby(现代待机) S0改Suspend to RAM(待机到内存)S3睡眠解决方案(以机械革命F1 i5-11300H为例)
  3. 《Java程序设计》实验报告——Java的基本程序设计结构
  4. C/C++控制台应用程序——画三角形、圆、直线、矩形
  5. php run js,PHP switch 语句
  6. Swagger3.0
  7. Ajax服务器响应简单实例
  8. Web服务必须要知道的几个概念
  9. Android studio 关于SQlite数据库导出,创建数据库、表以及如何查看操作
  10. 排序算法:桶排序、计数排序、基数排序