数学建模算法与应用(司守奎版)python 代码实现

2023-11-05

引言:在准备九月份的华为杯,入门选择了司守奎老师的教材《数学建模算法与应用》,书中仅提供了lingo和matlab的版本,但是python的数据处理能力更加出色,因此考虑在学习的过程中将代码全部用python实现。

第一章:线性规划

基础代码:(例题1.1)
'''
max z = 4x+3y
2x+y <= 10
x+y <= 8
y <= 7
x,y >= 0

'''

#pip install scipy
import numpy as np
from scipy.optimize import linprog

#目标函数
c = np.array([-4,-3])

#约束条件
A = np.array([[2,1],[1,1],[0,1]])
b = np.array([10,8,7])

#边界条件
x_bounds = (0,None)
y_bounds = (0,None)

#求解线性规划问题
res = linprog(c,A_ub=A,b_ub=b,bounds=[x_bounds,y_bounds])

print("Optimal value:", -res.fun)
print("Optimal value:",res.x)
基础代码:(例题1.2)
'''
max w = 2x+3y-5z
x+y+z = 7
2x-5y+z >= 10
x+3y+z <= 12
x,y,z >= 0

'''

#pip install scipy
import numpy as np
from scipy.optimize import linprog

#目标函数
c = np.array([-2,-3,5])

#约束条件
A = np.array([[-2,5,-1],[1,3,1]])
b = np.array([-10,12])

A_ = np.array([[1,1,1]])
b_ = np.array([7])

#边界条件
x_bounds = (0,None)
y_bounds = (0,None)
z_bounds = (0,None)

#求解线性规划问题
res = linprog(c,A_ub=A,b_ub=b,A_eq=A_,b_eq=b_,bounds=[x_bounds,y_bounds,z_bounds])

print("Optimal value:", -res.fun)
print("Optimal value:",res.x)
基础代码:(例题1.3)
'''
min w = 2x+3y+z
x+4y+2z >= 8
3x+2y >= 6
x,y,z >= 0

'''

#pip install scipy
import numpy as np
from scipy.optimize import linprog

#目标函数
c = np.array([2,3,1])

#约束条件
A = np.array([[-1,-4,-2],[-3,-2,0]])
b = np.array([-8,-6])

#边界条件
x_bounds = (0,None)
y_bounds = (0,None)
z_bounds = (0,None)

#求解线性规划问题
res = linprog(c,A_ub=A,b_ub=b,bounds=[x_bounds,y_bounds,z_bounds])

print("Optimal value:", res.fun)
print("Optimal value:",res.x)
基础代码:(例题1.5)
#pip install scipy
import numpy as np
from scipy.optimize import linprog

#目标函数
c = np.array([1,1,2,2,3,3,4,4])

#约束条件
A = np.array([[1,-1,-1,1,-1,1,1,-1],[1,-1,-1,1,1,-1,-3,3],[1,-1,-1,1,-2,2,3,-3]])
b = np.array([-2,-1,-1/2])

#边界条件
u1_bounds = (0,None)
u2_bounds = (0,None)
u3_bounds = (0,None)
u4_bounds = (0,None)
v1_bounds = (0,None)
v2_bounds = (0,None)
v3_bounds = (0,None)
v4_bounds = (0,None)

#求解线性规划问题
res = linprog(c,A_ub=A,b_ub=b,bounds=[u1_bounds,v1_bounds,u2_bounds,v2_bounds,u3_bounds,v3_bounds,u4_bounds,v4_bounds])

print("Optimal value:", res.fun)
print("Optimal value:",res.x)
基础代码:(投资的收益与风险----------------模型一)
'''
模型一:固定风险水平 优化收益
'''

#pip install scipy
import numpy as np
from scipy.optimize import linprog
import matplotlib.pyplot as plt

def model(a):
    #目标函数
    c = np.array([-(0.05),-(0.28-0.01),-(0.21-0.02),-(0.23-0.045),-(0.25-0.065)])

    #约束条件
    A = np.array([[0,0.025,0,0,0],[0,0,0.015,0,0],[0,0,0,0.055,0],[0,0,0,0,0.026]])
    b = np.array([a,a,a,a])

    A_ = np.array([[(1),(1+0.01),(1+0.02),(1+0.045),(1+0.065)]])
    b_ = np.array([1])

    #边界条件
    x1_bounds = (0,None)
    x2_bounds = (0,None)
    x3_bounds = (0,None)
    x4_bounds = (0,None)
    x5_bounds = (0,None)

    #求解线性规划问题
    res = linprog(c,A_ub=A,b_ub=b,A_eq =A_,b_eq=b_,bounds=[x1_bounds,x2_bounds,x3_bounds,x4_bounds,x5_bounds])

    # print("Optimal value:",-res.fun)
    # print("Optimal value:",res.x)

    return -res.fun

def draw(x,y):
    # 绘图
    x = x
    y = y
    plt.plot(x, y)  # 绘制x和y的函数关系图
    plt.xlabel('a')  # x轴标签
    plt.ylabel('Q')  # y轴标签
    plt.title('风险与收益的关系图',fontproperties='SimHei')  # 图表标题
    plt.show()  # 显示图表


if __name__ == '__main__':
    a = 0;
    x = [0];
    y = [0];
    while a < 0.05:
        y_res = model(a)
        a = a+0.001
        x.append(a)
        y.append(y_res)

    draw(x,y)

在这里插入图片描述

  • 思考:虽然根据关系图可以确定转折点的大致范围,但是怎么确定这个具体值是多少是个问题哎?而且步长为0.001,终止条件为0.05也是根据经验设定的吧,在开始的时候如果没有设定好【巧合值】的话可能连转折点都很难发现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数学建模算法与应用(司守奎版)python 代码实现 的相关文章

随机推荐

  • 原生微信小程序 计算属性 wxs

    原生微信小程序 计算属性 wxs WXS官方文档 WXS 不依赖于运行时的基础库版本 可以在所有版本的小程序中运行 WXS 与 JavaScript 是不同的语言 有自己的语法 并不和 JavaScript 一致 WXS 的运行环境和其他
  • gpio相关介绍

    GPIO 通用输入输出端口 gpio的基本输出功能由STM32控制引脚输出高 低电平 实现开关控制 最基本的输入功能是检测外部输入电平 gpio工作模式 输入模式 上拉 下拉 浮空 在输入模式中 施密特触发器打开 输出被禁止 数据寄存器每隔
  • HTML,CSS,Javascript在Web开发中分别起什么作用?

    简单描述HTML CSS Javascript在Web开发中分别起什么作用 1 什么是HTML 超文本标记语言 Hyper Text Markup Language HTML 是用来描述网页的一种语言 2 CSS 层叠样式表 Cascadi
  • VUE联动下拉选择框

  • Javascript中大括号“{}”的多义性

    JS中大括号有四种语义作用语义1 组织复合语句 这是最常见的 if condition else for 语义2 对象直接量声明 var obj name jack age 23 整个是个赋值语句 其中的 name jack age 23
  • 蓝桥杯 空间

    题目1 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 小蓝准备用 256MB 的内存空间开一个数组 数组的每个元素都是 32 位 二进制整数 如果不考虑程序占用的空间和维护内存需要的辅助空间 请问 256MB 的空
  • IDEA : IDEA好用的插件集锦

    1 Free Mybatis plugin mybatis 插件 让你的mybatis xml像java代码一样编辑 我们开发中使用mybatis时时长需要通过mapper接口查找对应的xml中的sql语句 该插件方便了我们的操作 安装完成
  • 代理IP和Socks5代理:跨界电商与爬虫的智能引擎

    跨界电商 作为全球市场的一部分 对数据的需求越来越大 同时 随着互联网的发展 爬虫技术也在不断演进 成为了跨界电商的关键工具之一 然而 随之而来的是网站的反爬虫机制和网络安全风险 在这种情况下 代理IP和Socks5代理应运而生 为企业提供
  • Java复习(第一季)

    Java的特性与版本 最好的跨平台开源编程语言 第二章 常量和变量 2 1 Java中的关键字 Java关键字是区分大小写的 viod是关键字 但Viod就不是 使用标识符时 需要遵守几条规则 1 标识符可以由字母 数字 下划线 美元符 组
  • Linux初体验—整理了一些Linux的常用命令

    目录 查看当前目录下的内容 文件目录操作命令 作用 用于切换当前工作目录 即进入指定目录 作用 用于显示文件内容 作用 以分页的形式显示文件内容 作用 查看文件末尾内容 作用 创建目录 作用 删除空目录 作用 删除指定文件或目录 作用 用于
  • RGB格式解释说明

    RGB 是一种加色模型 将红 Red 绿 Green 蓝 Blue 三原色的色光以不同的比例相加 以产生多种多样的色光 且三原色的红绿蓝不可能用其他单色光合成 浮点表示方式 取值范围为 0 0 1 0 整数表示 取值范围为 0 255 或者
  • MATLAB算法实战应用案例精讲-【深度学习】CNN池化

    目录 计算机视觉与卷积神经网络 计算机视觉综述 计算机视觉的发展历程 卷积神经网络
  • 狂神ES入门

    视频链接 https www bilibili com video BV17a4y1x7zq 文章目录 一 Elasticsearch与Solr对比 二 环境安装 2 1 Elasticsearch 7 12 1安装 2 2 elastic
  • 7)存储过程

    文章目录 一 存储过程概念 1 存储过程的优点 2 存储过程的类型 二 创建和使用存储过程 1 创建存储过程 2 使用存储过程 3 修改存储过程 4 删除存储过程 一 存储过程概念 就是一条或者多条T SQL 语句的集合 可视为数据库的批处
  • 带注释 实验8-2-3 删除字符 (20分)

    实验8 2 3 删除字符 20分 本题要求实现一个删除字符串中的指定字符的简单函数 函数接口定义 void delchar char str char c 其中char str是传入的字符串 c是待删除的字符 函数delchar的功能是将字
  • Datawhale宣传团队名单公示!

    Datawhale团队 公示 Datawhale宣传团队名单 感谢今年八月所有参与 AI夏令营 的宣传大使 是你们 让更多的同学了解到了开源学习 也让更多人看到了Datawhale 星星之火 可以燎原 社区的发展离不开每一位贡献者 让我们从
  • 浏览器渲染进程的线程有哪些

    浏览器的渲染进程的线程总共有五种 1 GUI渲染线程 负责渲染浏览器页面 解析HTML CSS 构建DOM树 构建CSSOM树 构建渲染树和绘制页面 当界面需要重绘或由于某种操作引发回流时 该线程就会执行 注意 GUI渲染线程和JS引擎线程
  • ueditor百度富文本编辑器粘贴后html丢失class和style样式

    问题 项目经理从123在线编辑上排版好的文章 粘贴到项目的编辑器上 样式完全乱了 排版是这样的 复制到ueditor后的格式 这天差地别呀 于是打开代码模式 发现section的属性全没了 但是 span的属性还是有的 猜测ueditor有
  • Vue样式设置的几种方式

    1 直接使用class设置样式 代码 结果 2 通过v bind绑定class设置样式 1 使用json形式 代码 结果 2 使用数组形式 代码 结果 注意 通过第二种数组的方式 也可以通过三元表达式进行class的判断 此处不再赘述 3
  • 数学建模算法与应用(司守奎版)python 代码实现

    引言 在准备九月份的华为杯 入门选择了司守奎老师的教材 数学建模算法与应用 书中仅提供了lingo和matlab的版本 但是python的数据处理能力更加出色 因此考虑在学习的过程中将代码全部用python实现 第一章 线性规划 基础代码