贪心算法和遗传算法优劣对比——c#
项目背景:某钢管厂的钢筋原材料为 55米,工作需要需切割 40 米(1段)、11 米(15 段)等 4 种规格 ,现用贪心算法和遗传算法两种算法进行计算:
第一局:{ 40, 1 }, { 11, 15 },{ 10, 1 }, { 5,1},如何切割最省原材料?
运行结果如下:
贪心算法切割方案:
原材料 1: [40, 11 ]剩余: 4 米
原材料 2: [11, 11, 11, 11, 11 ]剩余: 0 米
原材料 3: [11, 11, 11, 11, 11 ]剩余: 0 米
原材料 4: [11, 11, 11, 11, 10 ]剩余: 1 米
原材料 5: [5 ]剩余: 50 米
共需要5个原材料,总剩余: 55 米,贪心算法利用率: 80.00%
部分长度未切割完毕。
遗传算法切割方案:
原材料 1: [11, 11, 11, 11, 11] 剩余 0 米
原材料 2: [11, 11, 11, 11, 11] 剩余 0 米
原材料 3: [11, 11, 11, 11, 11] 剩余 0 米
原材料 4: [40, 10, 5] 剩余 0 米
遗传算法共需要4个原材料,总剩余: 0 米,遗传算法利用率: 100.00%
============ 方案对比 ============
贪心算法: 使用原材料 5 个,总剩余 55 米,利用率 80.00%
遗传算法: 使用原材料 4 个,总剩余 0 米,利用率 100.00%
最佳方案:遗传算法,利用率更高 100.00% > 80.00%
第一局,遗传算法获胜。
第二局,修改需求如下: 工作需要需切割 40 米(11段)、11 米(15 段)等 4 种规格 { 40, 11 }, { 11, 15 },{ 10, 11}, { 5,11}
运算结果:
贪心算法切割方案:
原材料 1: [40, 11 ]剩余: 4 米
原材料 2: [40, 11 ]剩余: 4 米
原材料 3: [40, 11 ]剩余: 4 米
原材料 4: [40, 11 ]剩余: 4 米
原材料 5: [40, 11 ]剩余: 4 米
原材料 6: [40, 11 ]剩余: 4 米
原材料 7: [40, 11 ]剩余: 4 米
原材料 8: [40, 11 ]剩余: 4 米
原材料 9: [40, 11 ]剩余: 4 米
原材料 10: [40, 11 ]剩余: 4 米
原材料 11: [40, 11 ]剩余: 4 米
原材料 12: [11, 11, 11, 11, 10 ]剩余: 1 米
原材料 13: [10, 10, 10, 10, 10, 5 ]剩余: 0 米
原材料 14: [10, 10, 10, 10, 10, 5 ]剩余: 0 米
原材料 15: [5, 5, 5, 5, 5, 5, 5, 5, 5 ]剩余: 10 米
共需要15个原材料,总剩余: 55 米,贪心算法利用率: 93.33%
部分长度未切割完毕。
遗传算法切割方案:
原材料 1: [40] 剩余 15 米
原材料 2: [40] 剩余 15 米
原材料 3: [40] 剩余 15 米
原材料 4: [40] 剩余 15 米
原材料 5: [40] 剩余 15 米
原材料 6: [40] 剩余 15 米
原材料 7: [40] 剩余 15 米
原材料 8: [40] 剩余 15 米
原材料 9: [40] 剩余 15 米
原材料 10: [40] 剩余 15 米
原材料 11: [40, 11] 剩余 4 米
原材料 12: [11, 11, 11, 11, 11] 剩余 0 米
原材料 13: [11, 11, 11, 11, 11] 剩余 0 米
原材料 14: [11, 11, 11, 11, 10] 剩余 1 米
原材料 15: [10, 10, 10, 10, 10] 剩余 5 米
原材料 16: [10, 10, 10, 10, 10, 5] 剩余 0 米
原材料 17: [5, 5, 5, 5, 5, 5, 5, 5, 5, 5] 剩余 5 米
遗传算法共需要17个原材料,总剩余: 165 米,遗传算法利用率: 82.35%
============ 方案对比 ============
贪心算法: 使用原材料 15 个,总剩余 55 米,利用率 93.33%
遗传算法: 使用原材料 17 个,总剩余 165 米,利用率 82.35%
最佳方案:贪心算法,利用率更高 93.33% > 82.35%
第二局,贪心算法获胜
然而,最佳答案为 40米 +10米 +5 米分一组,需要11根原材料。11米的单独一组,11*15/55=3根原材料。11+3=14,共需14个原材料,利用率100%。由此可见,每种算法各有优缺点,不一定是最优解。
相关文章:
贪心算法和遗传算法优劣对比——c#
项目背景:某钢管厂的钢筋原材料为 55米,工作需要需切割 40 米(1段)、11 米(15 段)等 4 种规格 ,现用贪心算法和遗传算法两种算法进行计算: 第一局:{ 40, 1 }, { 11, 15…...
系统开发资源
一、前端篇 1.1 菜鸟CSS教程 1.2 HTML/CSS/JS 在线工具 二、后端篇 三、其他篇 3.1 菜鸟官网 3.2 黑马程序员学习路线 3.3 根据地区获取经纬度...
深度学习 bert与Transformer的区别联系
BERT(Bidirectional Encoder Representations from Transformers)和Transformer都是现代自然语言处理(NLP)中的重要概念,但它们代表不同的层面。理解这两者之间的区别与联系有助于更好地掌握它们在NLP任务中的应用。 …...
unity使用mesh 画图(1)
plane 圆 空心椭圆 椭圆 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class DrawMeshManager {static DrawMeshManager instance;public static DrawMeshManager Instance {get {if (instance ! null){retu…...
SpringMVC响应页面及不同类型的数据,
目录 响应页面 响应数据 文本数据 响应POJO对象 编辑 响应生命周期 视图解析器 控制器(Controller)处理完客户端请求后,生成的并返回给客户端的结果就是响应,响应的结果可以是静态页面,数据,HTM…...
地理信息系统(ArcGIS)在水文水资源及水环境中的应用:空间数据管理、空间分析功能、可视化表达
随着全球工业化和经济的快速发展,水资源短缺、水污染等问题日益严峻,成为制约可持续发展的重大瓶颈。地理信息系统(GIS)以其强大的空间数据管理和分析能力,在水文水资源及水环境的研究和管理中展现出独特优势。本文将深…...
电路原理(电容 集成电路NE555)
电容 1.特性:充放电,隔直流,通交流 2.电容是通过聚集正负电荷来存储电能的 3.电容充放电过程可等效为导通回路 4.多电容并联可以把容量叠加,但是多电容串联就不会,只会叠加电容的耐压值。 6.电容充放电时相当于通路&a…...
C++对象的初始化和对象所占资源的清理-----初始化列表
一、初始化列表 C 提供了 初始化列表(initializer list) 语法,可以在 构造函数 中用来初始化类的成员变量。它的主要优势是 提高效率,特别是在初始化 const 或 reference 类型的成员时,以及避免额外的赋值操作。 1.…...
零成本搭建Calibre个人数字图书馆支持EPUB MOBI格式远程直读
文章目录 前言1.网络书库软件下载安装2.网络书库服务器设置3.内网穿透工具设置4.公网使用kindle访问内网私人书库 前言 嘿,各位书虫们!今天要给大家安利一个超级炫酷的技能——如何在本地Windows电脑上搭建自己的私人云端书库。亚马逊服务停了ÿ…...
Ansible命令行模式常用模块使用案例(二)
在Ansible中,命令行模式(Ad-Hoc 模式)是一种快速执行任务的方式,适合临时任务或简单操作。以下是 Ansible 命令行模式中常用模块的使用案例(第二部分): 1 file模块 功能特性:主要用于…...
12. Pandas :使用pandas读Excel文件的常用方法
一 read_excel 函数 其他参数根据实际需要进行查找。 1.接受一个工作表 在 11 案例用到的 Excel 工作簿中,数据是从第一张工作表的 A1 单元格开始的。但在实际场景中, Excel 文件可能并没有这么规整。所以 panda 提供了一些参数来优化读取过程。 比如 s…...
Pytorch中矩阵乘法使用及案例
六种矩阵乘法 torch中包含许多矩阵乘法,大致可以分为以下几种: *:即a * b 按位相乘,要求a和b的形状必须一致,支持广播操作 torch.matmul():最广泛的矩阵乘法 :与torch.matmul()效果一样&…...
【MySQL】增删改查进阶
目录 一、数据库约束 约束类型 NULL约束:非空约束 UNIQUE:唯一约束 DEFAULT:默认值约束 PRIMARY KEY:主键约束 FOREIGN KEY:外键约束 二、表的设计 三、新增 四、查询 聚合查询 聚合函数 GROUP BY子句 HA…...
【Linux 指北】常用 Linux 指令汇总
第一章、常用基本指令 # 注意: # #表示管理员 # $表示普通用户 [rootlocalhost Practice]# 说明此处表示管理员01. ls 指令 语法: ls [选项][目录或文件] 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件…...
父组件中循环生成多个子组件时,有且只有最后一个子组件的watch对象生效问题及解决办法
提示:父组件中循环生成多个子组件时,有且只有最后一个子组件的watch对象生效问题及解决办法 文章目录 [TOC](文章目录) 前言一、问题二、解决方法——使用function函数代替箭头函数()>{}总结 前言 问题:子组件用that解决watch无…...
stable Diffusion 中的 VAE是什么
在Stable Diffusion中,VAE(Variational Autoencoder,变分自编码器)是一个关键组件,用于生成高质量的图像。它通过将输入图像编码到潜在空间(latent space),并在该空间中进行操作&…...
麒麟v10 ARM64架构系统升级mysql数据库从mysql-5.7.27到mysql-8.4.4图文教程
1、背景与问题说明 因mysql-5.2.27版本存在安全漏洞问题,为保障系统安全,需将处于生产环境的麒麟v10 ARM64架构系统服务器上当前部署的mysql-5.7.27版本升级到mysql-8.4.4,以规避潜在风险,提升系统整体的安全性和稳定性。 1.1 本…...
图论·拓扑排序
拓扑排序 有向无环图的遍历 检查有向图是否连通/有环 核心操作 统计度数,对于度为0的点作为起始点,添加度为0的点作为遍历 如何验证有环?注意不建议直接模拟,如果出现环这起始点的度一定不为0,肯定会少遍历一些点&…...
Uniapp组件 Textarea 字数统计和限制
Uniapp Textarea 字数统计和限制 在 Uniapp 中,可以通过监听 textarea 的 input 事件来实现字数统计功能。以下是一个简单的示例,展示如何在 textarea 的右下角显示输入的字符数。 示例代码 首先,在模板中定义一个 textarea 元素ÿ…...
一文了解JVM的垃圾回收
Java堆内存结构 java堆内存是垃圾回收器管理的主要区域,也被称为GC堆。 为了方便垃圾回收,堆内存被分为新生代、老年代和永久代。 新创建的对象的内存会在新生代中分配,达到一定存活时长后会移入老年代,而永久代存储的是类的元数…...
Vector底层结构和源码分析(JDK1.8)
参考视频:韩顺平Java集合 Vector 类的定义说明: Vector 的底层也是一个对象数组,protected Object[] elementData;Vector 是线程同步的,即线程安全,Vectoe 类的操作方法带有 synchronized 关键字:public sy…...
uni-app+vue3学习随笔
目录相关 static文件 编译器会把static目录中的内容整体复制到最终编译包内, 非 static 目录下的文件(vue组件、js、css 等)只有被引用时,才会被打包编译。 css、less/scss 等资源不要放在 static 目录下,建议这些…...
JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3+ 2025 版免费体验方案
JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3 2025 版免费体验方案 前言 JetBrains IDE 是许多开发者的主力工具,但从 2024.02 版本起,JetBrains 调整了试用政策,新用户不再享有默认的 30 天免费试用…...
移远通信联合德壹发布全球首款搭载端侧大模型的AI具身理疗机器人
在汹涌澎湃的人工智能浪潮中,具身智能正从实验室构想迈向现实应用。移远通信凭借突破性的端侧AI整体解决方案,为AI机器人强势赋能,助力其实现跨行业拓展,从工业制造到服务接待,再到医疗康养,不断改写各行业…...
嵌入式硬件篇---手柄控制控制麦克纳姆轮子
文章目录 前言1. 变量定义2. 摇杆死区设置3. 模式检查4. 摇杆数据处理4.1 右摇杆垂直值(psx_buf[7])4.2 右摇杆水平值(psx_buf[8])4.3 左摇杆水平值(psx_buf[5])4.4 左摇杆垂直值(psx_buf[6]&am…...
XML Schema 实例
XML Schema 实例 引言 XML(可扩展标记语言)是一种用于标记电子文件使其具有结构性的标记语言。XML Schema 是一种用于定义 XML 文档结构的机制,它定义了 XML 文档中允许的数据类型、元素和属性。本文将详细探讨 XML Schema 实例,包括其基本概念、结构、用途以及实例分析。…...
Datax-web部署文档(超详细)
Datax-web部署文档(超详细) Datax部署 # 参考官方文档 https://github.com/alibaba/DataX/blob/master/userGuid.md# 下载datax已经封装好的文件,不推荐源码自己编译 https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.…...
基于javaweb的SSM敬老院养老院管理系统(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
专题地图的立体表达-基于QGIS和PPT的“千层饼”视图制作实践
目录 前言 一、QGIS准备基础数据 1、QGIS 相关插件 2、图层标绘操作 二、PPT中制作 1、调整图片的规格 2、设置旋转 3、添加文字 三、总结 前言 在信息爆炸的时代,数据的可视化呈现变得愈发关键,而专题地图作为传递地理空间信息的有力工具&#…...
DeepSeek-R1 论文阅读总结
1. QA问答(我的笔记) Q1: DeepSeek如何处理可读性问题? 通过构建冷启动数据(数千条长CoT数据)微调基础模型,结合多阶段训练流程(RL训练、拒绝采样生成SFT数据),并优化输…...
如何选择适合您智能家居解决方案的通信协议?
如何选择适合您智能家居解决方案的通信协议? 在开发智能家居产品时,选择合适的通信协议对于设备的高效运行及其在智能家居系统中的互操作性至关重要。市面上协议众多,了解它们的特性并在做决定前考虑各种因素是非常必要的。以下是一些帮助您…...
蓝桥杯备考:set容器用法(lower_bound)---营业额统计
如图所示,这道题的暴力解法就是枚举每天的营业额,让该营业额和前面的天的营业额依次相减取最小值这样的话我们的时间复杂度就是N平方,我们是很有可能超时的 所以我们选择用set容器的二分查找功能 我们每次遍历到一个数的时候,前…...
vue3 动态添加路由并生成左侧菜单栏
先说下思路,登录后跳转到基础页面, 每访问一个页面时,会进到路由守卫的方法 守卫进行身份验证,登录成功后才能跳转到静态路由外的页面,否则就重定向回login页面 登录后跳转到基础页面(因为基础页面包含了左…...
上下文微调(Contextual Fine-Tuning, CFT)提高大型语言模型(LLMs)在特定领域的学习和推理能力
大型语言模型(LLMs)在开放领域任务中表现出色,但在快速演变的专业领域(如医学、金融)中面临挑战: 知识更新难题:传统指令微调(Instruction Fine-Tuning, IFT)依赖显式指令,难以适应动态知识。灾难性遗忘:持续预训练(Continued Pretraining, CPT)可能导致模型遗忘已…...
L2-4 吉利矩阵
输入样例: 7 3输出样例: 666 这道题是暴力纯搜,但是很难想,我这个是看的别人的代码 #include "bits/stdc.h" using namespace std; int x[20][20]; int l, n; int cnt 0; int sumx[5], sumy[5]; void dfs(int x, in…...
⭐算法OJ⭐汉明距离【位操作】(C++ 实现)Hamming Distance
Hamming Distance(汉明距离)是用于衡量两个等长字符串在相同位置上不同字符的个数的度量。它通常用于比较两个二进制字符串或编码序列的差异。 定义 给定两个长度相同的字符串 A A A 和 B B B,它们的汉明距离 D ( A , B ) D(A,B) D(A,B)…...
数据可信、隐私可控:CESS 如何打造波卡生态数据新基建?
原文:https://messari.io/report/cess-network-a-deep-dive-into-programmable-data-value-infrastructure作者:Messari编译:OneBlock波卡生态一直以来以其跨链互操作性和灵活性吸引了众多创新项目,尤其是在 DePIN(去中…...
HCIA-11.以太网链路聚合与交换机堆叠、集群
链路聚合背景 拓扑组网时为了高可用,需要网络的冗余备份。但增加冗余容易后会出现环路,所以我们部署了STP协议来破除环路。 但是,根据实际业务的需要,为网络不停的增加冗余是现实需要的一部分。 那么,为了让网络冗余…...
网络安全之数据加密(DES、AES、RSA、MD5)
刚到公司时,我的工作就是为app端提供相应的接口。之前app使用的是PHP接口,对数据加密方面做得比较少。到使用java接口时,老大开始让我们使用DES加密,进行数据传输,但是后来觉得DES是对称加密,密钥存在客户端…...
Vim忍者速成秘卷:让你的键盘冒出残影の奥义
🎯 核心原理 通过 超低延迟配置 + 肌肉记忆优化 + 视觉欺骗技术,达成行云流水的操作体验。就像《火影忍者》结印般流畅! ⚡ 残影生成术(基础篇) " 🛩️ 贴地飞行模式(.vimrc 极速配置) set timeoutlen=300 " 快捷键响应时间压缩至300ms(武士刀级响应)…...
致远互联FE协作办公平台 存在SQL注入漏洞(DVB-2025-8942)
免责声明 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x01…...
通俗易懂动态表单自定义字段解决方案
动态表单自定义字段解决方案 1. 背景: 有些项目可能会有要求,客户可以自定义设计字段,并且字段还需要在后台设置可展示、可搜索。 2. 场景: 比如说报名场景,我们并不知道客户想让用户填哪些东西。下面我就举个例子&…...
CentOS7离线部署安装Dify
离线部署安装Dify 在安装 Dify 之前,请确保您的机器满足以下最低系统要求: CPU > 2 核 内存 > 4 GiB 1.安装docker和docker compose 启动 Dify 服务器最简单的方式是通过docker compose。因此现在服务器上安装好docker和docker compose…...
Dify后端结构与二次开发指南(一)
Dify 的后端基于 Python 编写,使用 Flask 作为 Web 框架,SQLAlchemy 作为 ORM(对象关系映射),Celery 作为任务队列,Flask-Login 处理用户认证和授权。以下是对 Dify 后端结构的详细介绍,以及如何…...
vscode arm拓展 keil acm5 到acm6迁移
目录 1. Arm Keil Studio Visual Studio 代码扩展用户指南(only support acm6 project)(能不迁移还是别迁移了,工程量太大啦,会出很多问题的) 1. Arm Keil Studio Visual Studio 代码扩展用户指南ÿ…...
软件工程概述、软件过程模型、逆向工程(高软45)
系列文章目录 软件工程概述、软件过程模型、逆向工程。 文章目录 系列文章目录前言一、软件工程概述二、能力成熟度模型1.能力成熟度模型CMM2.能力成熟度模型集成CMMI 三、软件过程模型1.瀑布模型SDLC2.原型化模型3.螺旋模型4.增量模型5.喷泉模型6.敏捷模型7.统一过程模型RUP 四…...
医药制造行业现状 医药制造行业内检实验室LIMS
在医药制造行业中,质量控制是确保产品安全性和有效性的关键环节。随着科技的进步和监管要求的日益严格,传统的实验室信息管理系统(LIMS)已经难以满足现代医药制造企业对高效、精准管理的需求。面对这一挑战,白码内检实…...
FX-std::list
std::list 是 C 标准库中的一个双向链表容器,定义在 <list> 头文件中。它支持在任意位置高效地插入和删除元素,但不支持随机访问。以下是 std::list 的基本用法和一些常见操作: 1. 包含头文件 #include <list> 2. 定义和初始化…...
配置安全网站
配置网站 确定是Debian系统 更新索引:apt update 安装包:apt upgrade -y 查看nginx状态:systemctl status nginx 安装:nginx:apt install nginx 启动:systemctl start nginx 在/var/www/里面创建一个…...
C/C++中对字符处理的常用函数
C语言中的 ctype.h 头文件提供了一系列字符分类和转换函数,用于高效处理字符相关操作。这些函数通过接受 int 类型参数(需为 unsigned char 或 EOF (-1)值),返回非零值表示条件正确,返回0表示错…...