网站主题模板温州建设诚信网站
2026/1/23 8:19:04 网站建设 项目流程
网站主题模板,温州建设诚信网站,搜索引擎对网站推广的作用,汇鑫小学网站建设原题地址 。 前面#xff0c;DeepSeek用numpy的线性规划没有解答完成。听张泽鹏先生说他用PuLP这个库整数规划解决了。今天也让DeepSeek编一个。 请用PuLP这个库整数规划解决电压按钮问题#xff0c;不做别的 他给出了如下程序 import re import pulpdef parse_line_part2(…原题地址 。前面DeepSeek用numpy的线性规划没有解答完成。听张泽鹏先生说他用PuLP这个库整数规划解决了。今天也让DeepSeek编一个。请用PuLP这个库整数规划解决电压按钮问题不做别的他给出了如下程序importreimportpulpdefparse_line_part2(line):解析一行数据返回电压要求和按钮列表第二部分# 匹配大括号部分match_bracere.search(r\{([^}])\},line)ifnotmatch_brace:returnNone,None# 解析电压要求joltage_strmatch_brace.group(1)target[int(x.strip())forxinjoltage_str.split(,)]# 匹配所有圆括号部分buttons[]patternr\(([^)])\)matchesre.findall(pattern,line)formatchinmatches:# 解析圆括号内的数字nums[int(x.strip())forxinmatch.split(,)]buttons.append(nums)returntarget,buttonsdefsolve_machine_pulp(target,buttons):使用PuLP整数规划求解单个机器的电压配置问题n_counterslen(target)n_buttonslen(buttons)# 创建整数规划问题probpulp.LpProblem(ButtonPresses,pulp.LpMinimize)# 创建决策变量每个按钮的按压次数非负整数xpulp.LpVariable.dicts(x,range(n_buttons),lowBound0,catInteger)# 目标函数最小化总按压次数probpulp.lpSum([x[i]foriinrange(n_buttons)])# 约束条件每个计数器的总增加量必须等于目标值forcounterinrange(n_counters):# 计算影响该计数器的所有按钮的总贡献total_effectpulp.lpSum([x[btn_idx]forbtn_idxinrange(n_buttons)ifcounterinbuttons[btn_idx]])probtotal_effecttarget[counter],fCounter_{counter}_Constraint# 求解问题prob.solve(pulp.PULP_CBC_CMD(msgFalse))# 检查求解状态ifpulp.LpStatus[prob.status]Optimal:# 提取解presses_list[int(pulp.value(x[i]))foriinrange(n_buttons)]total_pressessum(presses_list)returntotal_presses,presses_list,求解成功elifpulp.LpStatus[prob.status]Infeasible:return-1,None,无可行解else:return-1,None,f求解失败:{pulp.LpStatus[prob.status]}defvalidate_solution(target,buttons,presses_list):验证解是否正确ifpresses_listisNone:returnFalse,Nonemlen(target)current[0]*mforj,press_countinenumerate(presses_list):ifpress_count0:foridxinbuttons[j]:current[idx]press_countreturncurrenttarget,currentdefmain():total_presses0success_count0fail_count0# 读取输入文件withopen(2510-input.txt,r)asf:linesf.read().strip().splitlines()fori,lineinenumerate(lines):target,buttonsparse_line_part2(line)iftargetisNoneornotbuttons:continuemin_presses,presses_list,messagesolve_machine_pulp(target,buttons)ifmin_presses0:# 验证解is_valid,calculatedvalidate_solution(target,buttons,presses_list)ifis_valid:print(f机器{i1}:{min_presses}次按压 ({message}))print(f 按钮按压次数:{presses_list})print(f 验证通过:{calculated}{target})total_pressesmin_presses success_count1else:print(f机器{i1}: 验证失败! ({message}))print(f 尝试解:{presses_list})print(f 计算值:{calculated}! 目标值:{target})fail_count1else:print(f机器{i1}: 求解失败 ({message}))fail_count1print(f\n总结:)print(f成功求解:{success_count}台机器)print(f失败:{fail_count}台机器)print(f总最少按压次数:{total_presses})returntotal_pressesif__name____main__:main()安装pulppython3 pip.pyz install pulp --break-system-packages -i https://pypi.tuna.tsinghua.edu.cn/simple执行time python3 2510pulp.txt 2510pulp-res.txt real 0m0.783s user 0m0.224s sys 0m0.056s cat 2510pulp-res.txt ... 机器 194: 69 次按压 (求解成功) 按钮按压次数: [0, 16, 25, 25, 1, 2] 验证通过: [41, 51, 41, 43] [41, 51, 41, 43] 机器 195: 37 次按压 (求解成功) 按钮按压次数: [20, 8, 9] 验证通过: [29, 8, 37, 28, 37] [29, 8, 37, 28, 37] 总结: 成功求解: 195 台机器 失败: 0 台机器看来问DeepSeek问题不但要说清楚需求还要说对工具。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询