数学建模 (线性规划 python代码 两种)

线性规划: 

线性规划(Linear Programming,LP)是一种数学优化方法,用于解决一类特定类型的最优化问题。该问题的目标是在给定的一组线性约束条件下,找到使某个线性目标函数达到最大或最小的变量值。线性规划问题可以表示为以下标准形式:

最小化(或最大化):Z = c^T * x

约束条件:Ax <= b, x >= 0

其中,c是一个n维向量,表示线性目标函数的系数;x是一个n维向量,表示待求解的变量;A是一个m×n的矩阵,表示约束条件的系数;b是一个m维向量,表示约束条件的右侧常数。

线性规划问题的解可以通过以下步骤求得:

  1. 将问题转化为标准形式。
  2. 判断是否存在可行解,即是否存在满足所有约束条件的变量值。
  3. 利用线性规划算法求解最优解。常用的线性规划算法包括单纯形法、内点法等。
  4. 检验最优解的可行性和稳定性。
  5. 根据实际问题对最优解进行解释和应用。

线性规划广泛应用于经济学、工程学、运筹学等领域,用于解决资源分配、生产计划、货运调度等问题。

运用scipy.optimize:

求最大值:

import numpy as np
c = np.array([2,3,-5])#目标函数系数A = np.array([[-2,5,-1],[1,3,1]])#不等式<=左侧未知数系数矩阵
B = np.array([-10,12])#不等式<=右侧未知数系数矩阵Aeq = np.array([[1,1,1]])#等式左侧系数矩阵
Beq = np.array([7])#等式右侧系数矩阵x1 = [0, None]  #未知数取值范围
x2 = [0, None]  #未知数取值范围
x3 = [0, None]  #未知数取值范围res = optimize.linprog(-c,A,B,Aeq,Beq,bounds=(x1, x2, x3))#求最大值,将目标函数系数转为负数,求最小值(即为最大值)
print(res)#最大值即为14

 求最小值:

#coding=gbk
from scipy import optimize
import numpy as np
c = np.array([2,3,1])#目标函数系数A = np.array([[-1,-4,-2],[-3,-2,0]])#不等式<=左侧未知数系数矩阵
B = np.array([-8,-6])#不等式<=右侧未知数系数矩阵x1 = [0, None]  #未知数取值范围
x2 = [0, None]  #未知数取值范围
x3 = [0, None]  #未知数取值范围
res = optimize.linprog(c,A,B,bounds=(x1, x2, x3))
print(res)#最小值为7

运用cvxpy库:

求最大值:

import cvxpy as cp
from numpy import arrayc = array([70, 50, 60])  #定义目标向量
a = array([[2, 4, 3], [3, 1, 5], [7, 3, 5]])  #定义约束矩阵
b = array([150, 160, 200])  #定义约束条件的右边向量
x = cp.Variable(3, pos=True)  #定义3个决策变量
obj = cp.Maximize(c@x)    #构造目标函数
cons = [a@x <=b]     #构造约束条件
prob = cp.Problem(obj, cons)
prob.solve(solver='GLPK_MI')   #求解问题
print('最优解为:', x.value)
print('最优值为:', prob.value)

 

求最小值:

import cvxpy as cpx=cp.Variable((4,4),pos=True)
obj=cp.Minimize(2800*sum(x[:,0])+4500*sum(x[:3,1])+6000*sum(x[:2,2])+7300*x[0,3])
cons=[sum(x[0,:])>=15,sum(x[0,1:])+sum(x[2,:3])>=10,sum(x[0,2:])+sum(x[1,1:3])+sum(x[2,:2])>=20,x[0,3]+x[1,2]+x[2,1]+[3,0]>=12]
prob=cp.Problem(obj,cons)
prob.solve(solver='GLPK_MI')
print("最优值为:",prob.value)
print("最优解为:\n",x.value)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/564280.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows10 WSL启动Ubuntu虚拟机,安装DolphinScheduler

文章目录 1. 启动WSL与虚拟机2. 安装Docker与DolphinScheduler容器 1. 启动WSL与虚拟机 使用管理员权限运行命令&#xff1a; Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux重启后即可创建虚拟机 在Microsoft Store中搜索Ubuntu&…

Web前端—Vue

Vue是一套前端框架&#xff0c;免除原生JS中的DOM操作&#xff0c;简化书写。基于MVVM思想&#xff0c;实现了数据的双向绑定&#xff0c;将编程的关注点放在数据上。 框架 框架是一个半成品软件&#xff0c;是一套可重用的&#xff0c;通用的&#xff0c;软件基础代码模型。基…

树的遍历方式DFS和BFS

DFS(depth first search) 深度优先遍历 从图中一个未访问的顶点V开始&#xff0c;沿着一条路一直走到底&#xff0c;然后从这条路尽头的节点回退到上一个节点&#xff0c;再从另一条路走到底…不断递归重复这个过程&#xff0c;直到所有的顶点都遍历完成。前序遍历&#xff0c…

Git bash获取ssh key

目录 1、获取密钥 2、查看密钥 3、在vs中向GitHub推送代码 4、重新向GitHub推送修改过的代码 1、获取密钥 指令&#xff1a;ssh-keygen -t rsa -C "邮箱地址" 连续按三次回车&#xff0c;直到出现类似以下界面&#xff1a; 2、查看密钥 路径&#xff1a;C:\U…

Java-3-异常处理

概述与异常体系结构 在Java中&#xff0c;将程序执行中发生的不正常情况称为“异常”&#xff0c;开发过程中的语法错误和逻辑错误不是异常。 分类&#xff1a; Error&#xff1a;JVM无法解决的严重问题&#xff0c;如系统内部错误、资源耗尽等等&#xff0c;比如&#xff1…

小车倒立摆系统极点配置,LQR闭环控制

在之前直流电机控制仿真里有讲过状态控制的基本架构&#xff0c;有兴趣的同学可以再回去看看&#xff0c;链接如下好玩的直流电机调速实验、PID、极点配置、LQR、观测器&#xff1b;不讲大道理_lqr控制器观测器-CSDN博客 在专栏的前三篇文章 小车倒立摆物理建模与simulink仿真…

电脑不能读取移动硬盘,但是可以读取U盘解决方法

找到此电脑 右键设备管理器&#xff0c;找到其中的通用串行总线控制器。 注意&#xff0c;凡是插入到电脑当中不能读取的U盘或者移动硬盘&#xff0c;都会在通用串行总线控制器当中显示为USB大容量存储设备 鼠标选中“USB大容量存储设备”&#xff0c;右键卸载它。此时&#x…

蓝桥杯 2023 省A 颜色平衡树

树上启发式合并是一个巧妙的方法。 dsu on tree&#xff0c;可以称为树上启发式合并&#xff0c;是一种巧妙的暴力。用一个全局数组存储结果&#xff0c;对于每棵子树&#xff0c;有以下操作&#xff1a; 先遍历轻儿子&#xff0c;处理完轻儿子后将数组清零&#xff08;要再…

Kotlin的lateinit关键词

Kotlin的lateinit关键词 lateinit&#xff0c;延迟初始化。有时&#xff0c;并不能定义一个变量或对象值为空&#xff0c;而也没办法在对象或变量在定义声明时就为它赋值初始化&#xff0c;那么这时就需要用到Kotlin提供的延迟初始化lateinit。比如&#xff0c;有些依赖注入框架…

简述C语言文件操作

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文(平均质量分79)&#xff0c;分享…

蓝桥杯(2):python基础算法【上】

时间复杂度、枚举、模拟、递归、进制转换、前缀和、差分、离散化 1 时间复杂度 重要是看循环&#xff0c;一共运行了几次 1.1 简单代码看循环 #时间复杂度1 n int(input()) for i in range(1,n1):for j in range(0,i):pass ###时间复杂度&#xff1a;123....nn(1n)/2 所以…

银行5G短消息应用架构设计

&#xff08;一&#xff09;RCS简介 1.1 RCS的提出与标准制定 RCS(Rich Communication Services & Suite&#xff0c;富媒体通信)是GSMA(Groupe Speciale Mobile Association&#xff0c;全球移动通信系统协会)在2008年提出的一种通讯方式&#xff0c;RCS融合了语音、消息…