首页 > 其他分享 >数学建模(一):LP 问题

数学建模(一):LP 问题

时间:2023-03-04 11:14:15浏览次数:334  
标签:Aeq 求解 线性规划 res 建模 数学 LP array beq

目录

数学建模(一):LP 问题

在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个重要分支。自从1947年G.B.Dantzig提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。

我们可以使用 lingo 来求解复杂的线性规划问题:https://blog.csdn.net/qq_62789540/article/details/125926169,这里的重点不是 lingo

一、 MATLAB求解

线性规划求解主要弄清楚两个部分,目标函数(max,min)和约束条件(s.t.),我们求解时一般要化为MATLAB标准形式:

其中 c 和 x 为 n 维列向量,A、Aeq为适当维数的矩阵,b、beq为适当维数的列向量。

注意,是求最小值,而不是最大值。

如果使用MATLAB求解的代码为:

[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)
%% LB,UB分别为x的上界和下界,即最优解的范围

如,求解:

代码示例:

c = [-2, -3, 5];  % 将最大值装换为求最小值

A = [
[-2, 5, -1]; 
[1, 3, 1]
];  % Ax <= b

b = [-10; 12]; 
Aeq = [1, 1, 1];  % Aeq x = beq
beq = 7;
[x,y] = linprog(c, A, b, Aeq, beq, zeros(3, 1));
x, y = -y  % 最后记得要把最终解加一个负号,装换为最大值

二、 Python 求解

使用 Python 求解的话,需要 numpy 和 scipy 库的支持。

第三方库的安装:pip install numpy, scipy -i https://mirrors.aliyun.com/pypi/simple

from scipy import optimize
import numpy as np

#求解函数
res = optimize.linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)
#目标函数最小值
print(res.fun)
#最优解
print(res.x)

我们还是求解上述的那个线性规划问题:

示例代码:

from numpy import array, zeros
from scipy import optimize

c = [-2, -3, 5]
A = [
    [-2, 5, -1], 
    [1, 3, 1]
]
b = [
    [-10], 
    [12]
]
Aeq = [[1, 1, 1]]
beq = [7]

res = optimize.linprog(array(c), array(A), array(b), array(Aeq), array(beq), (0, None))
print(-res.fun, res.x)

fun就是目标函数最小值,x就是最优解。

当然,我们也可以使用 lingo 来求解线性规划的问题。

标签:Aeq,求解,线性规划,res,建模,数学,LP,array,beq
From: https://www.cnblogs.com/liuzhongkun/p/17177854.html

相关文章

  • WeLM微信自研NLP大规模语言模型
    2022年9月份微信AI推出自研NLP大规模语言模型WeLM,该模型是一个尺寸合理的中文模型,能够在零样本以及少样本的情境下完成包多语言任务在内的多种NLP任务。openai的chatgpt是......
  • 组合数学笔记(二)
    继续十二重计数法:我们考虑把\(n\)个金币分给\(m\)个人,要求满射,方案数为多少。显然金币是没有区别的,人是有区别的,也就是无区别的小球放入有区别的盒子当中,是典型的插板法,......
  • mybtis分页插件pagehelper集成
    1,引入依赖,spingboot版本,少配置及兼容性<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><vers......
  • delphi 使用TFlowPanel容器,实现对内含控件进行自动排版
    效果图:   需求:当用户新增或者删除控件时,后面的控件(如果有的话)自动后退或者前移实现:需要用的控件是TFlowPanel,临时演员是TscGPEdit1.TFlowPanel设置......
  • 不规范使用PageHelper导致线程污染出现报错
    问题复现:在原有项目基础上开发获取最新的第一个模板的接口。接口中只有一个查询sql:selectxfromxwherexlimit1。调试总是报错:org.springframework.jdbc.BadSqlGr......
  • delphi 自定义cxGrid的导航面板
    效果图  面板设置:1.把导航面板显示出来:Navigator.visible:=true 2.在Navigator-Buttons下设置自己需要显示或者隐藏的按钮  3.添加自定义按钮  双......
  • NLP-transformer-分词库用法
    NLP-transformer-分词库用法 参考文档: https://blog.csdn.net/orangerfun/article/details/1240894671pipinstalltransformer2下载专有的vocab.txt词典这个......
  • 农村高中生源转型期提升学生二次函数建模能力的课堂探究
        建模思想的渗透要注意一直持续下去,不能够出现口头学习问题,否则无法从根本上有效锻炼及发展高中生的数学建模能力。而在帮助学生巩固数学建模思想运用过程中可以......
  • 牛客小白月赛67—— 一刀二分三角(数学)
    https://ac.nowcoder.com/acm/contest/51458/C题目大意:给定一个三角形,三个点分别是(0,0)(xc,yc)(xb,0)。​问我们是否可以将三角形沿着x=某个数字切开,得到的两个平面图形面......
  • 从NLP视角看电视剧《狂飙》,会有什么发现?
    目录1、背景2、数据获取3、文本分析与可视化3.1短评数据预处理3.2词云图可视化3.3top关键词共现矩阵网络3.4《狂飙》演职员图谱构建4、短评相关数据分析与可视化5、总......