首页 > 其他分享 >从组合优化问题建模到贪心法求解以简单调度为例

从组合优化问题建模到贪心法求解以简单调度为例

时间:2024-10-18 12:32:03浏览次数:1  
标签:为例 加工 boldsymbol 建模 调度 任务 时间 贪心

此为课题组所指导本科生和低年级硕士生学习组合优化问题汇报
所用教材:北京大学屈婉玲教授《算法设计与分析》
课程资料:https://www.icourse163.org/course/PKU-1002525003
承诺不用于任何商业用途,仅用于学术交流和分享

1. 简单调度问题(1.2)

  • 问题描述: 有n项任务,每项任务加工时间已知. 从0时刻开始陆续安排到一台机器上加工. 每个任务的完成时间是从0时刻到任务加工截止的时间.
  • 求: 总完成时间(所有任务完成时间之和)最短的安排方案.

实例

  • 假定有一个实例:
    任务集 \(S=\{1,2,3,4,5\}\),
    加工时间: \(t_1=3, t_2=8, t_3=5, t_4=10, t_5=15\)

贪心法解法

  • 此时我们可以按照贪心法进行求解,即将加工任务按照加工时间从小到大进行排序,则加工时间少的任务会被多次重复计算而加工时间多的任务重复计算次数少。可以得到:
    贪心法解法

问题建模

  • 输入: 任务集: \(S=\{1,2, \ldots, n\}\), 第 \(\boldsymbol{j}\) 项任务加工时间: \(\boldsymbol{t}_{\boldsymbol{j}} \in \mathbf{Z}^{+}, \boldsymbol{j}=\mathbf{1 , 2 , \ldots , n}\).

  • 输出:调度 \(I, S\) 的排列 \(i_1, i_2, \ldots, i_n\) ,

  • 目标函数: \(I\) 的完成时间, \(t(I)=\sum_{k=1}^n(n-k+1) t_{i_k}\)

  • 最优解 \(I^*\) : 使得 \(t\left(I^*\right)\) 达到最小, 即 \(\boldsymbol{t}\left(\boldsymbol{I}^*\right)=\min \{\boldsymbol{t}(\boldsymbol{I}) \mid \boldsymbol{I}\) 为 \(\boldsymbol{S}\) 的排列 \(\}\)

  • 描述:对于n个任务的任务集中的每个任务j,其加工时间是一个正整数,用\(\boldsymbol{t}_{\boldsymbol{j}}\)表示,输出是一个调度I,其表示任务一个排列顺序。目标函数则是调度I的完成时间。最优解就是使得目标函数t(I)达到最小的任务排列,此处记作\(I^*\)

贪心法求解简单调度

  • 设计策略:加工时间短的先做
  • 算法:根据加工时间从小到大排序,依次加工
  • 算法正确性:对所有输入实例都得到最优解
  • 证明:加入调度f, 第i,j项任务相邻且有逆序(即加工时间长的任务排在加工时间短的任务之前), 即\(t_i>t_j\)。交换任务i和j得调度g.
  • 总完成时间 \(t(g)-t(f)=t_j-t_i<0\)
  • 所以通过这个式子说明,我们减少了一个逆序以后,它的加工时间是总的时间是减少了。当调度I没有逆序出现时,因此它在总的加工时间中达到最小的,它是个最优解。

反例

  • 当然,贪心法不能求解所有问题,往往不是正确的。
  • 例如,在如下背包问题中:
    背包问题反例
  • 假设我们使用贪心法,使用单位重量下的物品价值进行评价,则有 单位重量价值大的优先, 总重不超 6按照 \(\frac{\boldsymbol{v}_i}{\boldsymbol{w}_i}\) 从大到小排序: \(1,2,3,4\)

\[\frac{7}{3} > \frac{9}{4}>\frac{9}{5}>\frac{2}{2} \]

  • 通过贪心法,我们得到的解是物品{1,4},重量是2+3=5,价值是7+2=9。然而,我们可以找到一个更好的解物品{2,4},重量是4+2=6,价值是9+2=11。因此,简单使用贪心法不能求解所有组合优化问题。

2. 简单投资问题(1.2)

  • 问题: \(m\) 元钱, 投资 \(n\) 个项目. 效益函数 \(f_i(x)\),表示第 \(i\) 个项目投 \(x\) 元的效益, \(i=1,2, \ldots, n\).求如何分配每个项目的钱数使得总效益最大?

实例:

简单投资问题

问题建模

  • 输入:\(n, m, f_i(x), i=1,2, \ldots, n, x=1,2, \ldots, m\) n 项目数,m钱数,\(f_i(x)\)表示效益函数。
  • 解: \(n\) 维向量 \(<x_1, x_2, \ldots, x_n>, x_i\) 是第 \(i\) 个项目的钱数, 使得下述条件满足:
  • 目标函数:$ \max \sum_{i=1}^n f_i\left(x_i\right) $
  • 约束条件:$ \sum_{i=1}^n x_i=m, \quad x_i \in \mathbf{N} $

小结

优化问题求解的关键

  • 建模: 对输入参数和解给出形式化或半形式化的描述
  • 设计算法: 采用什么算法设计技术
  • 正确性: 是否对所有的实例都得到正确的解
  • 分析算法一一效率

标签:为例,加工,boldsymbol,建模,调度,任务,时间,贪心
From: https://www.cnblogs.com/cloud-ken/p/18474011

相关文章

  • Leetcode刷题. 贪心算法
    贪心算法:    比较传统的解释:将整个问题拆解为几个小问题,找到小问题的最优解,加起来就是整个问题的全局最优解。对于现在的我理解贪心就是一种感觉,给出证明很难,解题思路一般就是认真读题,发掘题目的条件,然后尝试给出算法。11.盛最多水的容器     一个显而易......
  • Matlab|用于平抑可再生能源功率波动的储能电站建模及评价
    目录主要内容    模型研究   1.目标函数2.约束条件  部分代码     结果一览   1.储能平抑风电功率2.储能平抑风电和光伏功率下载链接主要内容   程序参考文献《用于平抑可再生能源功率波动的储能电站建模及评价》,针对风电和光伏分布式能源出......
  • 基于PID控制器的四旋翼无人机控制系统的simulink建模与仿真,并输出虚拟现实动画
    1.课题概述      基于PID控制器的四旋翼无人机控制系统的simulink建模与仿真,并输出vr虚拟现实动画,输出PID控制器的控制反馈曲线。整个仿真过程,无人机为升空,下降,再升空的飞行效果。 2.系统仿真结果 3.核心程序与模型版本:MATLAB2022a  4.系统原理简介4.1......
  • 【Matlab 六自由度机器人】笛卡尔空间规划和关节空间规划(附MATLAB建模代码)
    笛卡尔空间规划和关节空间规划近期更新前言正文1.笛卡尔空间规划特点:步骤:2.关节空间规划特点:步骤:3.两种方法的区别4.MATLAB代码:机械臂避障路径规划问题和解答4.1关节空间规划方法4.2笛卡尔空间规划方法4.3规划方法的比较5.路径规划优化5.1平滑性优化5.2速度......
  • 汽车建模用什么软件最好?汽车建模渲染建议!
    在汽车建模和渲染领域,选择合适的软件对于实现精确的设计与高质量的视觉效果至关重要。那么不少的汽车设计师如何选择合适的建模软件与渲染方案呢,一起来简单看看吧!一、汽车建模用软件推荐1、AliasAutodesk旗下的Alias系列软件是汽车设计和造型的行业领导者,提供从概念草图到A级......
  • E Revenge on My Boss CCPC 2023 Harbin Site 贪心,二分
    传送门给出了三个数组\(\{a_i\},\{b_i\},\{c_i\}\)要求给出一个排列\(p\)最小化:任选一个位置\(m\),最大化贡献\(S=(\sum_{i=1}^ma_{p_i}+\sum_{i=m}^nb_{p_i})c_{p_m}\)。标准的最小的最大提示我们考虑二分。这里直接二分答案\(Mid\)。那么就考虑是否存在一个排列使得对于任意\(......
  • 机器学习建模分析
    机器学习5.1机器学习概述5.1.1机器学习与人工智能5.1.2python机器学习方法库5.2回归分析5.2.1回归分析原理5.2.2回归分析实现5.3分类分析5.3.1分类学习原理5.3.2决策树5.5.3支持向量机5.4聚类分析5.4.1聚类任务5.4.2K-means算法5.5神经网络和深度学习5......
  • 综合能源系统中基于电转气和碳捕集系统的热电联产建模与优化研究(Matlab代码实现)
    ......
  • 【数据建模运营岗】相关知识点学习及整理简短篇
    1.数据建模基础概念1.1数据建模概述定义:数据建模是将现实业务问题转化为数据结构或模型,便于存储、管理和分析。常用方法包括实体-关系模型(ER模型)和维度建模(如星型模型、雪花模型)。目标:优化数据存储和查询,支持业务运作与决策分析。ER模型:核心概念:以实体及其关系为核心,......
  • 小帅和小美有容-UMLChina建模知识竞赛第5赛季第16轮
    DDD领域驱动设计批评文集做强化自测题获得“软件方法建模师”称号《软件方法》各章合集参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。只要最先答对前3题,即可获得本轮优胜。如果有第4题,第4题为附加题,对错不影响优胜者的判定,影响的是......