【Deep Seek本地化部署】模型实测:规划求解python代码
目录
前言
一、实测
1、整数规划问题
2、非线性规划问题
二、代码正确性验证
1、整数规划问题代码验证
2、非线性规划问题代码验证
三、结果正确性验证
1、整数规划问题结果正确性验证
2、非线性规划问题正确性验证
四、整数规划问题示例
后记
前言
模型:使用ollama部署的deepseek-r1:14b。
一、实测
直接问:规划求解python代码
回答:它给出了两份代码,一个适用于整数规划问题,一个适用于非线性规划。

1、整数规划问题
from pulp import *# 创建问题
prob = LpProblem('example', LpMaximize)# 定义变量
x1 = LpVariable('x1', 0, None, Integer)
x2 = LpVariable('x2', 0, None, Integer)# 定义目标函数
prob += 3 * x1 + 2 * x2# 定义约束条件
prob += x1 + x2 <= 4
prob += 2 * x1 + x2 <= 6# 求解问题
prob.solve()# 输出结果
print("状态:", prob.status)
print(f"x1 = {x1.value}")
print(f"x2 = {x2.value}")
print(f"目标函数值 = {value(prob.objective)}")
2、非线性规划问题
from scipy.optimize import minimize# 目标函数
def objective(x):return x[0]**2 + x[1]**2# 约束条件
constraints = [{'type': 'ineq', 'fun': lambda x: 4 - (x[0] + x[1])}, # x1 + x2 <= 4{'type': 'ineq', 'fun': lambda x: 6 - (2*x[0] + x[1])} # 2x1 + x2 <= 6
]# 初始猜测值
x0 = [0, 0]# 使用SLSQP方法求解
result = minimize(objective, x0, method='SLSQP', constraints=constraints)if result.success:print("结果:")print(f"x1 = {result.x[0]:.2f}")print(f"x2 = {result.x[1]:.2f}")print(f"目标函数值 = {result.fun}")
else:print("无解或问题未定义。")
二、代码正确性验证
1、整数规划问题代码验证
直接报错……

问题:LpVariable方法的第四个参数有问题。
# 定义变量
x1 = LpVariable('x1', 0, None, Integer)
x2 = LpVariable('x2', 0, None, Integer)
改为:
# 定义变量
x1 = LpVariable('x1', 0, None, "Integer")
x2 = LpVariable('x2', 0, None, "Integer")
或者改为这个也行:
# 定义变量
x1 = LpVariable('x1', 0, None, LpInteger)
x2 = LpVariable('x2', 0, None, LpInteger)
修改完就正常运行了。

2、非线性规划问题代码验证
第二份代码就正常运行了。

三、结果正确性验证
1、整数规划问题结果正确性验证

显然,一眼就看出来了,它结果有问题,x1和x2应为具体的数值。
问题:
print(f"x1 = {x1.value}")
print(f"x2 = {x2.value}")
在源码中找到一个比较可疑的变量名,试试看。

修改:
print(f"x1 = {x1.varValue}")
print(f"x2 = {x2.varValue}")
结果:

那么这个结果是否正确呢?还需进一步验证
问题转换:
设:x = x1,y = x2(为方便查看)
限制条件:
① x ≥ 0,且为整数
② y ≥ 0,且为整数
③ x + y ≤ 4
④ 2x + y ≤ 6
求:当x和y取何值时,3x + 2y取最大值(创建问题时使用的是LpMaximize,即求最大值)
解:直接上图

正确答案为:x = 2,y = 2,目标函数最大值为10。
结果正确。
2、非线性规划问题正确性验证
问题转换:
设:x = x1,y = x2(为方便查看)
限制条件:
① x ≥ 0(因初始猜测值的是x0 = [0, 0])
② y ≥ 0(因初始猜测值的是x0 = [0, 0])
③ x + y ≤ 4
④ 2x + y ≤ 6
求:当x和y取何值时,x² + y²取最小值(使用的是SciPy库中的optimize中的minimize)
解:直接上图

根据条件可知,x和y的取值范围在四边形ABCD的范围内,很容易得出当x = 0,y = 0时,x² + y²的最小值为0。
结果正确。
四、整数规划问题示例
from pulp import *
'''
物品A 6.85元/个
物品B 5.28元/个
物品C 2.3元/个
总价=90.56元
求A、B、C分别买了几个
'''arr = [6.85, 5.28, 2.3]
total = 90.56# 创建问题实例
prob = LpProblem("example", LpMaximize)# 定义决策变量(整数)
n = len(arr)
variables = [LpVariable(f'x{i+1}', 0, None, LpInteger) for i in range(n)]# 定义约束条件
prob += lpSum([arr[i] * variables[i] for i in range(n)]) == total# 求解问题
prob.solve()# 输出结果
print("Status:", prob.status)
for i in range(n):print(f"x{i+1} = {variables[i].value()}")'''
结果
Status: 1
x1 = 10.0
x2 = 2.0
x3 = 5.0
'''
from pulp import *
'''
假设有三种产品,每种产品的单位利润分别为 [3, 5, 4] 元,
而生产每个产品需要消耗的资源为 [2, 4, 3] 单位,
总共有 100 单位的资源可用。
目标是确定每种产品的生产数量,以使总利润最大化。
'''# 输入数据
profits = [3, 5, 4] # 利润数组
resource_usage = [2, 4, 3] # 资源消耗数组
total_resource = 100 # 总资源可用量# 创建问题实例
prob = LpProblem("Maximize_Profits", LpMaximize)# 定义决策变量(整数)
n = len(profits)
variables = [LpVariable(f'x{i+1}', 0, None, LpInteger) for i in range(n)]# 定义目标函数:最大化总利润
prob += lpSum([profits[i] * variables[i] for i in range(n)]), "Maximize Profits"# 添加约束条件:资源限制
prob += lpSum([resource_usage[i] * variables[i] for i in range(n)]) <= total_resource, "Total Resource Constraint"# 求解问题
prob.solve()# 输出结果
print("Status:", prob.status)
for i in range(n):print(f"x{i+1} = {variables[i].value()}")
print("Maximized Profit =", value(prob.objective))'''
结果:
Status: 1
x1 = 50.0
x2 = 0.0
x3 = 0.0
Maximized Profit = 150.0
'''
后记
后面又测试了几次,有时候它给出的代码可以直接运行,有时候又有问题


相关文章:
【Deep Seek本地化部署】模型实测:规划求解python代码
目录 前言 一、实测 1、整数规划问题 2、非线性规划问题 二、代码正确性验证 1、整数规划问题代码验证 2、非线性规划问题代码验证 三、结果正确性验证 1、整数规划问题结果正确性验证 2、非线性规划问题正确性验证 四、整数规划问题示例 后记 前言 模型ÿ…...
MySQL锁类型(详解)
锁的分类图,如下: 锁操作类型划分 读锁 : 也称为共享锁 、英文用S表示。针对同一份数据,多个事务的读操作可以同时进行而不会互相影响,相互不阻塞的。 写锁 : 也称为排他锁 、英文用X表示。当前写操作没有完成前,它会…...
搜索插入位置(35)
35. 搜索插入位置 - 力扣(LeetCode) 相关算法:二分查找最左侧和最右侧target的index-CSDN博客 class Solution { public:int searchInsert(vector<int>& nums, int target) {int left 0;int right nums.size() - 1;int ans nu…...
八. Spring Boot2 整合连接 Redis(超详细剖析)
八. Spring Boot2 整合连接 Redis(超详细剖析) 文章目录 八. Spring Boot2 整合连接 Redis(超详细剖析)2. 注意事项和细节3. 最后: 在 springboot 中 , 整合 redis 可以通过 RedisTemplate 完成对 redis 的操作, 包括设置数据/获取数据 比如添加和读取数据 具体整…...
VDSuit-Full惯性动捕设备:高效率、高品质动画制作的利器
惯性动捕设备作为动画制作领域的新兴技术,与传统的关键帧动画制作相比,可以大大的缩短制作周期为创作者们提供极大便利。传统方式下,动画师需要逐帧调整角色动作,耗时费力。而惯性动捕设备能实时捕捉演员的动作,几乎瞬…...
【环境搭建】1.1源码下载与同步
目录 写在前面 一,系统要求 二,安装depot_tools 三,获取代码 四,代码同步 五,代码结构 写在前面 当前的开发背景是基于Google的开源Chromium,来开发Android设备的浏览器方案。 一,系统要…...
开源智慧园区管理系统对比其他十种管理软件的优势与应用前景分析
内容概要 在当今数字化快速发展的时代,园区管理软件的选择显得尤为重要。而开源智慧园区管理系统凭借其独特的优势,逐渐成为用户的新宠。与传统管理软件相比,它不仅灵活性高,而且具有更强的可定制性,让各类园区&#…...
C语言可变参数
在C语言中,处理可变参数(Variable Arguments)主要依赖于 <stdarg.h> 头文件中的一组宏定义。 以下是详细讲解和示例: 声明可变参数函数:使用 ... 表示可变参数 访问参数:通过 va_list 类型和配套宏…...
(1)Linux高级命令简介
Linux高级命令简介 在安装好linux环境以后第一件事情就是去学习一些linux的基本指令,我在这里用的是CentOS7作演示。 首先在VirtualBox上装好Linux以后,启动我们的linux,输入账号密码以后学习第一个指令 简介 Linux高级命令简介ip addrtou…...
frida 入门
一直想学 frida 一直鸽,终于有 ctf 用到了,我测东西这么多 官方文档感觉写的依托,这 python rpc 直接拿来入门真的太有生活了 frida 是一个动态插桩 (dynamic instrumentation) 工具,提供了交互式 cli 界面来追踪函数行为。用人话…...
基于STM32的智能健康监测手环
1. 引言 随着可穿戴设备的普及,健康监测技术正逐步融入日常生活。本文设计了一款基于STM32的智能健康监测手环,能够实时采集用户心率、血氧饱和度、体温及运动数据,并通过低功耗蓝牙(BLE)与手机APP交互。该系统结合了…...
neo4j-community-5.26.0 install in window10
在住处电脑重新配置一下neo4j, 1.先至官方下载 Neo4j Desktop Download | Free Graph Database Download Neo4j Deployment Center - Graph Database & Analytics 2.配置java jdk jdk 21 官网下载 Java Downloads | Oracle 中国 path: 4.查看java -version 版本 5.n…...
Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 循环类型】
文章目录 一、Shell 循环类型二、Shell while 循环三、Shell for 循环四、Shell until 循环五、Shell select 循环六、总结 一、Shell 循环类型 循环是一个强大的编程工具,使您能够重复执行一组命令。在本教程中,您将学习以下类型的循环 Shell 程序&…...
WAWA鱼2024年终总结,关键词:成长
前言 本来想着偷懒一下,不写2024年终总结了,因为24年上半年还在忙毕业,下半年在忙转正,其实没什么太多好写的。结果被an_da和学弟催更了,哈哈哈,感谢大家对我近况的关注,学校内容基本都忘的差不…...
【Redis】hash 类型的介绍和常用命令
1. 介绍 Redis 中存储的 key-value 本身就是哈希表的结构,存储的 value 也可以是一个哈希表的结构 这里每一个 key 对应的一个 哈希类型用 field-value 来表示 2. 常用命令 命令 介绍 时间复杂度 hset key field value 用于设置哈希表 key 中字段 field 的值为…...
二分基础两道
Leetcode704: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出:…...
Skyeye 云 VUE 版本 v3.15.7 发布
Skyeye 云智能制造,采用 Springboot winUI 的低代码平台、移动端采用 UNI-APP。包含 30 多个应用模块、50 多种电子流程,CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表…...
位运算和操作符属性
位运算和操作符属性 除了课件中提到的那几种应用,其他时候一般先不考虑用这个原反补码 printf("%d\n,017")打印出来则是15 printf("%d\n,0017")打印出来也是15 printf("%d\n,0x017")打印出来是23eg:2进制转换为32进制则每5个2进制位…...
php的使用及 phpstorm环境部署
php语法 环境搭建:在小皮中新建网站,注意先填写域名再点击选择根目录。 成功创建网站后,打开发现forbidden,因为新建的网站里是空的,需要新建index.php文件----> 在Phpstorm中左上角打开文件,打开那个文…...
高阶开发基础——快速入门C++并发编程6——大作业:实现一个超级迷你的线程池
目录 实现一个无返回的线程池 完全代码实现 Reference 实现一个无返回的线程池 实现一个简单的线程池非常简单,我们首先聊一聊线程池的定义: 线程池(Thread Pool) 是一种并发编程的设计模式,用于管理和复用多个线程…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
uniapp获取当前位置和经纬度信息
1.1. 获取当前位置和经纬度信息(需要配置高的SDK) 调用uni-app官方API中的uni.chooseLocation(),即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...
