线性规划案例分享

今天想写一个最优传输的简单实现,结果学歪了,学到线性规划去了,这里我发现了一个宝藏网站
虽然是讲计量经济的,但是里面提供的公式和代码我很喜欢,有时间可以好好读一下
https://python.quantecon.org/lp_intro.html

参考博客
https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.linprog.html

https://python.quantecon.org/lp_intro.html

example1

在这里插入图片描述

图解法

import numpy as np
from scipy.optimize import linprog
import matplotlib.pyplot as plt
from matplotlib.patches import Polygonfig, ax = plt.subplots(figsize=(8, 6))
ax.grid()# Draw constraint lines
ax.hlines(0, -1, 17.5)
ax.vlines(0, -1, 12)
ax.plot(np.linspace(-1, 17.5, 100), 6-0.4*np.linspace(-1, 17.5, 100), color="c")## 画一条直线
ax.plot(np.linspace(-1, 5.5, 100), 10-2*np.linspace(-1, 5.5, 100), color="c") ## 画一条直线
ax.text(1.5, 8, "$2x_1 + 5x_2 \leq 30$", size=12)
ax.text(10, 2.5, "$4x_1 + 2x_2 \leq 20$", size=12)
ax.text(-2, 2, "$x_2 \geq 0$", size=12)
ax.text(2.5, -0.7, "$x_1 \geq 0$", size=12)# Draw the feasible region
feasible_set = Polygon(np.array([[0, 0],[0, 6],[2.5, 5],[5, 0]]),color="cyan")
ax.add_patch(feasible_set)# Draw the objective function
ax.plot(np.linspace(-1, 5.5, 100), 3.875-0.75*np.linspace(-1, 5.5, 100), color="orange")
ax.plot(np.linspace(-1, 5.5, 100), 5.375-0.75*np.linspace(-1, 5.5, 100), color="orange")
ax.plot(np.linspace(-1, 5.5, 100), 6.875-0.75*np.linspace(-1, 5.5, 100), color="orange")
ax.arrow(-1.6, 5, 0, 2, width = 0.05, head_width=0.2, head_length=0.5, color="orange")
ax.text(5.7, 1, "$z = 3x_1 + 4x_2$", size=12)# Draw the optimal solution
ax.plot(2.5, 5, "*", color="black")
ax.text(2.7, 5.2, "Optimal Solution", size=12)plt.show()

结果如下,这个图还蛮好看的
在这里插入图片描述

python代码 - solution

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import linprog
from quantecon.optimize.linprog_simplex import linprog_simplex
import ot
from scipy.stats import betabinom
import networkx as nx
# Define parameters# Construct parameters
c_ex1 = np.array([3, 4])# Inequality constraints
A_ex1 = np.array([[2, 5],[4, 2]])
b_ex1 = np.array([30,20])# Solve the problem
# we put a negative sign on the objective as linprog does minimization
res_ex1 = linprog(-c_ex1, A_ub=A_ex1, b_ub=b_ex1)res_ex1

结果如下
在这里插入图片描述

matlab代码-solution

%% example1
clc;
clear;
c=[-3,-4];			% 价值向量
a_inequ=[2,5;4,2];	% a、b对应不等式的左边和右边
b_inequ=[30;20];
a_eq=[];			% aeq和beq对应等式的左边和右边
b_eq=[];
[x,y]=linprog(c,a_inequ,b_inequ,a_eq,b_eq,zeros(2,1));
fprintf("x=[%3f,%3f]\n",x);
fprintf("y=[%3f]\n",y);
%

结果如下
在这里插入图片描述

example2

在这里插入图片描述

python代码

from scipy.optimize import linprog
c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds])
print(res.fun)
print(res.x)

结果如下
在这里插入图片描述

matlab代码


%%example2
clc;
clear;
c=[-1,4];			% 价值向量
a_inequ=[-3,1;1,2];	% a、b对应不等式的左边和右边
b_inequ=[6;4];
a_eq=[];			% aeq和beq对应等式的左边和右边
b_eq=[];
lb = [-inf,-3]; % 这里不要写成了lb=[-3,-inf],否则无界
ub =[];
[x,y]=linprog(c,a_inequ,b_inequ,a_eq,b_eq,lb,ub);
fprintf("x=[%3f,%3f]\n",x);
fprintf("y=[%3f]\n",y);

在这里插入图片描述

example3

在这里插入图片描述

python代码


from scipy.optimize import linprog
import numpy as npc = [-1,-1/3]
a_inequ = np.array([[1, 1],[1 ,1/4],[1 ,-1],[-1/4, -1],[-1, -1],[-1 ,1]])b_inequ = np.array([2, 1, 2 ,1 ,-1 ,2]);a_eq =np.array([[1, 1/4]]);
b_eq = np.array([1/2]);x0_bounds = [-1,1.5];
x1_bounds = [-0.5,1.25];res = linprog(c, A_ub=a_inequ, b_ub=b_inequ,A_eq=a_eq,b_eq=b_eq, bounds=[x0_bounds, x1_bounds])print(res.x)
print(res.fun)

结果如下
在这里插入图片描述

matlab代码

clc;
clear;
c = [-1 -1/3];
a_inequ  = [1 1; 1 1/4;1 -1; -1/4 -1;-1 -1;-1 1];
b_inequ = [2 1 2 1 -1 2];
a_eq = [1 1/4];
b_eq = 1/2;
lb = [-1,-0.5];
ub = [1.5,1.25];
[x,y] = linprog(c,a_inequ,b_inequ,a_eq,b_eq,lb,ub);
fprintf("x=[%3f,%3f]\n",x);
fprintf("y=[%3f]\n",y);

在这里插入图片描述嘿嘿,先到这里吧

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

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

相关文章

【Guava笔记01】Guava Cache本地缓存的常用操作方法

这篇文章,主要介绍Guava Cache本地缓存的常用操作方法。 目录 一、Guava Cache本地缓存 1.1、引入guava依赖 1.2、CacheBuilder类 1.3、Guava-Cache使用案例

如何一键部署本地Java项目到服务器上

一、背景 我开发了一个Java代码,现在想部署到服务器上,当然可以使用Jenkins部署,但是Jenkins配置和维护成本比较高,所以我今天分享的是轻量级的一键部署脚本 演示:本地Window的Java代码 -> Vmware虚拟机Centos7上…

面试题:RabbitMQ 有哪几种消息模式?

文章目录 前言核心组成Rabbitmq 消息模式3.1 Simple 模式ProductorCustomer 3.2 Fanout 模式ProductorCustomer 3.3 Direct 模式Productor 3.4 Topic 模式Productor 3.5 Work 模式3.5.1 轮询分发ProductorWorker1 3.5.2 公平分发Worker1 防止消息丢失机制4.1 消息确认4.2 持久化…

在WIN从零开始在QMUE上添加一块自己的开发板(一)

文章目录 一、前言二、源码编译(一)安装Msys2(二)配置GCC工具链(三)安装QEMU构建依赖(四)下载编译QEMU源码 二、QUME编程基础(一)QOM机制(二&…

十种较流行的网络安全框架及特点分析

文章目录 前言一、CIS关键安全控制二、COBIT三、CSA云控制矩阵(CCM)四、NIST网络安全框架(CSF)五、TARA六、SOGP七、OCTAVE八、ISO / IEC 27001:2022九、HITRUST CSF十、PCI DSS 前言 网络安全框架主要包括安全控制框架&#xff…

LabVIEW振动筛螺栓松动故障诊断

LabVIEW振动筛螺栓松动故障诊断 概述:利用LabVIEW解决振动筛螺栓松动的故障诊断问题。通过集成的方法,不仅提高了故障检测的准确性,还优化了维护流程,为类似的机械设备故障提供了可靠的解决方案。 由于工作条件复杂,…

Linux系统安装NFS服务器

NFS是一种网络文件系统,英文全称Network File System,通过NFS可以让不同的主机系统之间共享文件或目录。通过NFS,用户可以直接在本地NFS客户端读写NFS服务端上的文件,是非常好的共享存储工具。本篇文章将介绍如何在CentOS7上安装N…

android 开发 W/TextToSpeech: speak failed: not bound to TTS engine

问题 笔者使用TTS(TextToSpeech)对于文本内容进行语音播报,控制台报错 android 开发 speak failed:not bound to TTS engine详细问题 笔者核心代码: import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.speech.tts.…

git rev-parse v406 ‘v4.0.4‘^{} master什么意思?

git rev-parse 是一个 Git 命令,用于解析出 git 对象(如分支、标签、提交等)的完整 SHA-1 哈希值。这个命令对于理解 git 中各种引用的内部表示非常有用。 让我们一步步分析 git rev-parse v406 v4.0.4^{} master 这条命令: v406…

[嵌入式软件][入门篇][仿真平台] STM32F103实现LED、按键

上一篇:[嵌入式软件][入门篇] 搭建在线仿真平台(STM32) 文章目录 一、点亮LED灯(1) 简介(2) 示例代码(3) 仿真效果(闪烁) 二、按键检测(1) 简介1. 按键原理2. 检测按键端口3. 消抖 (2) 示例代码1 (按下点亮,松开熄灭&a…

微信小程序海报插件Painter 2.0(canvas画图)使用并保存图片到相册案例

一、下载与引入 Painter通过 json 数据形式,来进行动态渲染并绘制出图片。 Painter 的优势 功能全,支持文本、图片、矩形、qrcode 类型的 view 绘制布局全,支持多种布局方式,如 align(对齐方式)、rotate&…

一个简单的Web程序(详解创建一个Flask项目后自带的一个简单的Web程序)

程序代码截图如下: 1.应用初始化 在创建 Flask 程序时,通常需要先创建一个应用实例进行应用初始化。 from flask import Flask # 应用的初始化 app Flask(__name__) 上述代码中,使用 Flask 类创建了一个应用实例 app。 __name__ 参数用…

理解 Stable Diffusion、模型检查点(ckpt)和变分自编码器(VAE)

前言 在探索深度学习和人工智能领域的旅途中,理解Stable Diffusion、模型检查点(ckpt)以及变分自编码器(VAE)之间的关系至关重要。这些组件共同构成了当下一些最先进图像生成系统的基础。本文将为初学者提供一个详细的概述,帮助您理解这些概念以及它们是…

mp4文件可以转成mp3音频吗

现在是个非常流行刷短视频一个年代,刷短视似乎成了人们休闲娱乐的一种方式,在日常刷短视频过程中,肯定会有很多同学被短视频 bgm 神曲洗脑,比如很多被网红翻唱带火的歌曲,例如其中"不负人间”,就是其中…

Python 散点图的绘制(Seaborn篇-03)

Python 散点图的绘制(Seaborn篇-03)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

【温故而知新】HTML5拖放/地理定位/浏览器支持

文章目录 一、概念二、拖放三、地理定位(Geolocation)四、浏览器支持 一、概念 HTML5是HTML的最新版本,它引入了许多新的元素和功能,以适应现代网页开发的需求。以下是HTML5的一些主要特点: 新增语义元素&#xff1a…

go获取文件md5值不正确的问题记录

一次偶然的操作,发现了一些端倪,获取md5时如下是常规操作: md5hash : md5.New()file, _ : os.Open(filename)defer file.Close()_, err : io.Copy(md5hash, file) // file 为*os.File类型,即读取文件后的文件对象if err ! nil {r…

2024年1月19日Arxiv最热NLP大模型论文:Self-Rewarding Language Models

超越人类反馈限制,Meta自我奖励语言模型刷新AlpacaEval 2.0排行榜 引言:超越人类的AI代理——自我奖励语言模型的探索 在人工智能的发展历程中,我们一直在探索如何打造出能够超越人类智慧的AI代理。这些代理不仅需要能够理解和执行人类的指…

BuildRoot配置RTL8822CE WIFIBT模块(BT部分)

BuildRoot配置RTL8822CE WIFI&BT模块(WIFI部分)-CSDN博客 WIFI部分更新一下: ①、rkwifibt.mk 查看了output/rockchip_rk3399_tinkerboard2/build/的两个目录都有wifi相关的ko(后面make clean之后剩下linux-headers-custom路径的)&…

使用函数计算,数禾如何实现高效的数据处理?

作者:邱鑫鑫,王彬,牟柏旭 公司背景和业务 数禾科技以大数据和技术为驱动,为金融机构提供高效的智能零售金融解决方案,服务银行、信托、消费金融公司、保险、小贷公司等持牌金融机构,业务涵盖消费信贷、小…