首页 > 编程语言 >数学建模入门笔记(1)——Python pulp库解线性规划问题

数学建模入门笔记(1)——Python pulp库解线性规划问题

时间:2024-01-15 21:13:47浏览次数:44  
标签:status name Python print lowBound 库解 model pulp pl

参考:Python求解线性规划——PuLP使用教程 - Only(AR) - 博客园 (cnblogs.com)

1.Define the model

model = pl.LpProblem(name="",sense=pl.LpMaximize)

name 模型的名字

sense 模型的类型(pl.LpMaximize/pl.LpMinimize)

2.Define the decision variables

用x[i]存储变量,命名为xi

x = {i: pl.LpVariable(name=f"x{i}", lowBound=,upBound=, cat=) for i in range(1,)}

name 变量名

lowBound 变量最小值(默认负无穷)

upBound 变量最大值 (默认正无穷)

cat 变量的类型(pl.Binary 0/1,pl.Integer 整数,pl.Continuous 实数(默认值))

3.Set the objective

目标函数不用括号

model += x[1]+x[2]+x[3]

4.Add constraints

约束式用括号括起来

式子可以是>=,<=,==,不能是>,<,=

model += (2*x[1]+3*x[2]+x[3]>=10)

5.Solve the optimization problem

status = model.solve()

6.Print the results

print(f"status: {pl.LpStatus[model.status]}")
print(f"objective: {model.objective.value()}")
 
for var in model.variables():
    print(f"{var.name}: {var.value()}")
 
for name, constraint in model.constraints.items():
    print(f"{name}: {constraint.value()}")
pl.LpStatus[model.status] 解释
Optimal 找到了最优解
Not Solved 问题尚未被求解
Infeasible 问题是不可行的,即不存在满足所有约束条件的解
Unbounded 问题是无界的,即目标函数可以无限增加(或无限减少)而不受限制
Undefined 问题是未定义的,通常表示输入数据错误或问题规格不正确

*完整代码

《数学建模算法与应用》司守奎、孙兆亮 例1.2

import pulp as pl
model = pl.LpProblem(name="problem",sense=pl.LpMaximize)
x = {i:pl.LpVariable(name=f"x{i}",lowBound=0,cat=pl.LpContinuous) for i in range(1,4)}
model += (2 * x[1] - 5 * x[2] + x[3] >= 10)
model += (x[1] + 3 * x[2] + x[3] <= 12)
model += (x[1] + x[2] + x[3] == 7)
model += 2 * x[1] + 3 * x[2] -5 * x[3]
status = model.solve()
print(f"status:{pl.LpStatus[model.status]}")
print(f"objective:{model.objective.value()}")
for var in model.variables():
    print(f"{var.name}:{var.value()}")
for name,constraint in model.constraints.items():
    print(f"{name}:{constraint.value()}")

标签:status,name,Python,print,lowBound,库解,model,pulp,pl
From: https://www.cnblogs.com/cyxcc/p/17966333

相关文章

  • python selenium元素定位
    1.ID元素定位基于元素属性中的id的值来进行定位,id是一个标签的唯一属性值可以通过id属性来唯一定位一个元素,是首选的元素定位方式,动态ID不做考虑。driver.find_element_by_id('id')driver.find_element(By.ID,'id')2.name元素定位基于元素属性中的name的值来进行定位,但name并不......
  • # yyds干货盘点 # 盘点一个Python发票识别报错问题的处理案例
    大家好,我是皮皮。一、前言前几天在Python免费交流群【PJW】问了一个Python发票识别报错的问题,下图是他的报错截图,但是他自己看不出来哪里有问题,百度方面其实一问应该也有答案的,可是他就是有些找不到,然后找群里的好心人求助。后来【果冻和布丁】有GPT,找他帮忙问了一圈。二、实现过程......
  • python 安装Anaconda3详细步骤 Anaconda的【下载】——【安装】——【配置path环境变
    python安装Anaconda3详细步骤Anaconda的【下载】——【安装】——【配置path环境变量】——【检验】——【修改清华镜像】目录:1.下载2.安装3.配置4.检验5.镜像(修改Anaconda下载通道)前言:装anaconda,就不需要单独装python,anaconda中自带python1.下载(1)官网下载:Anaconda|I......
  • Python列表差异值统计:集合操作、列表推导式、对称差集详解
     在Python中,统计两个列表的差异值有多种方法,其中包括使用集合操作、列表推导式等。下面我将通过实例详细讲解几种常见的方法,并提供相应的实例源代码。方法一:使用集合操作list1=[1,2,3,4,5]list2=[3,4,5,6,7]#找到在list1中而不在list2中的元素difference1......
  • 盘点一个Python发票识别报错问题的处理案例
    大家好,我是皮皮。一、前言前几天在Python免费交流群【PJW】问了一个Python发票识别报错的问题,下图是他的报错截图,但是他自己看不出来哪里有问题,百度方面其实一问应该也有答案的,可是他就是有些找不到,然后找群里的好心人求助。后来【果冻和布丁】有GPT,找他帮忙问了一圈。二、实......
  • Python3 使用 PyMuPDF 库提取pdf中的字体文件
    先安装PyMuPDF库:pipinstallPyMuPDF 示例:importfitzdefextract_fonts(pdf_path):withfitz.open(pdf_path)asdoc:num_pages=doc.page_countfonts=[]forpage_numberinrange(num_pages):font_info=doc.get......
  • python 使用记录
     1.pythonpyqt6QPushButton设定快捷键importosimportsysfromPyQt6.QtWidgetsimportQPushButtonfromPyQt6.QtGuiimportQIconfromPyQt6.QtCoreimportQSize#......中间省略#初始化按钮self.btn=QPushButton('',self)self.btn.move(self.wid......
  • Python和易语言爬虫哪个速度更快
    在网络时代,爬虫技术成为了信息获取和数据分析的重要工具。Python和易语言都是常见的编程语言,而且都可以用于编写爬虫程序。本文将比较Python和易语言在爬虫方面的速度,并给出一些建议。Python是一种高级编程语言,具有强大的生态系统和广泛的应用领域。它有许多优秀的第三方库和框架,如......
  • Python中的动力系统相图绘制指南
    动力系统相图是描述动力学系统状态随时间变化的图形表示。它可以帮助我们了解系统的稳定性、周期性、吸引子等特性。Python提供了许多强大的工具来处理数值计算和数据可视化,其中最常用的库之一是Matplotlib。下面我们将详细介绍如何使用Matplotlib在Python中创建动力系统相图。步骤......
  • 如何用 Python 编写一个简单的技术指标量化策略
    技术指标是通过对历史价格、成交量等数据进行计算,来预测未来市场走势的工具。Python作为一种流行的编程语言,提供了许多强大的库,如Pandas和NumPy,可用于处理金融数据并实现量化策略。下面我们将详细介绍如何用Python编写一个简单的技术指标量化策略。步骤一:导入所需库在开始之前,我们......