数学建模常用算法汇总及python,MATLAB实现(一)—— 线性规划
线性规划
文章目录
- 线性规划
- 数学原型
- 1. matlab求解
- 函数原型
- 2. python求解
- 3. 例题
- matlab求解
数学原型
m i n x c ⃗ T x ⃗ s . t . { A x ⃗ ≤ b ⃗ A e q ⋅ x ⃗ = b e q ⃗ l b ⃗ ≤ x ⃗ ≤ u b ⃗ min_x\quad \vec c^T\vec x\\ s.t.\left\{ \begin{aligned} A\vec x \leq \vec{b} \\ Aeq\cdot \vec x = \vec {beq} \\ \vec {lb} \leq \vec x \leq \vec{ub} \end{aligned} \right . minxc Tx s.t.⎩⎪⎪⎨⎪⎪⎧Ax ≤b Aeq⋅x =beq lb ≤x ≤ub
这里向量都是列向量, 大写都是矩阵
c称为价值向量, b称为资源向量
1. matlab求解
matlab中线性规划求解一般都是最小值
如果要求最大值就要在优化目标上加个负号
注意求解之前要化成标准型
函数原型
这里的函数参数命名参考上面的数学原型(具体是列向量还是行向量也对照上面看)
[x, fval] = linprog(c, A, b, Aeq, beq, lb, ub)
- c, b, lb, ub都是列向量
2. python求解
可以使用的库,
plup
和scipy
scipy
代码线性规划的代码相较于plup
稍微简洁一些这里只浅介绍一下scipy
from scipy.optimize import linprog
import numpy as npres = linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIOS)
# 目标最小值
print(res.fun)
# 最优解
print(rea.x)
3. 例题
a r g m a x z = 4 x 1 + 3 x 2 s . t . { 2 x 1 + x 2 ≤ 10 x 1 + x 2 ≤ 8 x 2 ≤ 7 x 1 , x 2 ≥ 0 argmax \quad z = 4x_1+3x_2\\ s.t. \left\{ \begin{aligned} 2x_1 + x_2 \le 10\\ x_1+x_2\le8\\ x_2\le7\\ x_1, x_2\ge0\\ \end{aligned} \right . argmaxz=4x1+3x2s.t.⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧2x1+x2≤10x1+x2≤8x2≤7x1,x2≥0
matlab求解
%% 记得求解之前要把题目化成标准型(看最上面给出的数学原形里的那个标准型), 本题已经是标准型
% 变量名字都可以随便取, 只要自己认得出来
% 价值向量, 因为要求最大值所以加个负号
c = [-4; -3];A = [2, 1;1, 1;0, 1];% 资源向量
b = [10; 8; 7]% 返回值x_res, best_val也是随便取的名字
% linprog()括号里的参数 有空的中括号[] 是因为题目中没有等式条件
% 但是函数里面输入参数要按照顺序来, 所以就弄个[]占个位置
[x_res, best_val] = linprog(c, A, b, [], [], zeros(2, 1));x_res-best_val
附上答案
x_res =
2.0000
6.0000
ans(也就是 -best_val) =
26
数学建模常用算法汇总及python,MATLAB实现(一)—— 线性规划相关推荐
- 数学建模常用算法汇总及python,MATLAB实现(五) —— 拟合
拟合 比较重要的就是2.1和2.3 2.2可以浅看一下, 自己敲着试一试 就拟合部分来说, MATLAB比python强大很多, 自带cftool工具包, 并且有很多快速的函数, 个人建议使用MATL ...
- 数学建模常用算法汇总及python,MATLAB实现(六) —— pandas和matlab实现插值
插值 2的拉格朗日插值用的其实比较少, 可以看一下了解一下插值的原理 主要看看3里的结论和4的实现代码 文章目录 插值 1. 定义 2.拉格朗日插值 2.1 概念 3. Rouge现象 3.1 是什么 ...
- 数学建模常用算法汇总及python,MATLAB实现(二)—— 整数规划
整数规划 第3部分主要讲算法的具体实现, 如果对具体细节没有要求, 直接看1, 4就行, 直接用matlab内置的intlinprog函数或者python的cvxpy等第三方包 这里我个人更偏向于使用 ...
- 【Python数学建模常用算法代码(二)之BP神经网络】
Python数学建模常用算法代码(二) BP神经网络模型Python代码 import numpy as np import math import random import string impo ...
- 数学建模——主成分分析算法详解Python代码
数学建模--主成分分析算法详解Python代码 import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化 from sklearn.decomposi ...
- 【数学建模常用算法】之灰色预测模型GM
作者:張張張張 github地址:https://github.com/zhanghekai [转载请注明出处,谢谢!] 文章目录 一.灰色预测模型GM(1,1) 1.数据检验与数据预处理 1.1 构 ...
- 二维动态规划降维误差一般为多少_数学建模常用算法模型
数学模型的分类 按模型的数学方法分: 几何模型.图论模型.微分方程模型.概率模型.最优控制模型.规划论模型.马氏链模型等 按模型的特征分: 静态模型和动态模型,确定性模型和随机模型,离散模型和连续性模 ...
- 数学建模常用算法—灰色预测
今天数模君给大家讲解一下数学建模比赛中常用的一种预测方法:灰色预测法. 目录 模型的含义 灰色预测的原理 实例 模型的含义 灰色预测模型 ( Gray Forecast Model )是通过少量的.不 ...
- 数学建模常用算法—马尔可夫预测
今天数模君带大家学习一下数学建模中的预测算法之马尔科夫预测. 目录 模型的含义 实例分析 模型的含义 马尔可夫(Markov)预测法,就是一种关于事件发生的概率预测方法.它是根据事件的目前状况来预测其 ...
最新文章
- python多线程编程(2): 使用互斥锁同步线程
- AI顶会直播丨深度学习顶级会议ICLR中国预讲会明天召开,为期三天五大论坛
- Java Review - Java进程内部的消息中间件_Event Bus设计模式
- 一篇关于Maven项目的jar包Shell启动脚本
- Topk 问题详解及代码和数据分析
- Google 开源图形着色器测试框架 GraphicsFuzz
- 详细解读css中的浮动以及清除浮动的方法
- 同一性(identical)
- linux shell 递归统计代码行数
- python还能活多久_啥?python以后没活路?
- a form 出口享惠情况_关于“出口享惠情况”如何填报?
- linux格式u盘没有fat32,U盘,移动硬盘安装Linux的主分区,逻辑分区,FAT32格式分区的问题...
- 联想电脑Fn热键驱动
- linux下curl安装报错symbol lookup error
- matlab衰减曲线法整定步骤,Matlab仿真PID控制——衰减曲线法整定参数
- .net Core 3.1下的Roslyn 动态编译
- 大学生社会实践报告 模板
- iOS【UIDynamic重力、弹性碰撞吸附等现象】
- Burst(突发)信号详解
- 有赞会不会成为去中心化流量时代的淘宝