当前位置: 首页 > news >正文

加工生产调度(Johnson算法)

问题:

场景:工厂有n个产品,必须按顺序在A车间和B车间加工(先A后B)

目标:安排产品加工顺序,使得从开始到所有产品加工完成的总时间最短

关键限制:B车间必须等A完成后才能开始加工同一产品

上面是一个例子

它是让A的最早加工产品地加工时间尽可能地少,也就相当于降序排列。

又让B的最早加工产品的加工时间尽可能地多,也就是相当于升序排序。

但是,它不仅仅是这样做的

它是把上面地数据分成了两组,A<B放一组,A>B的放一组

对于A<B这一组按照A进行降序排列

对于A>B这一组按照B进行升序排列

至于为什么这样可以达到调度最优的问题我还是没有理解。

	sort(arr.begin(),arr.end(),[](const vector<int>&a,const vector<int>&b){bool a_group1 = (a[0]<=a[1]); // a是否属于group1bool b_group1 = (b[0]<=b[1]); // b是否属于group1if(a_group1&&b_group1){return a[0]<b[0]; // a,b都在group1,Group1按A_i降序排列}else if(!a_group1&&!b_group1){return a[1]>b[1]; // a,b都不在group1,Group2按B_i升序排列}else{return a_group1; // Group1优先于Group2}});

总代码:

# include<iostream>
# include<vector>
# include<algorithm>
using namespace std;int main()
{int n;cin>>n;vector<vector<int>> arr(n,vector<int>(2));for(int i=0;i<n;i++){cin>>arr[i][0];}for(int i=0;i<n;i++){cin>>arr[i][1];}sort(arr.begin(),arr.end(),[](const vector<int>&a,const vector<int>&b){bool a_group1 = (a[0]<=a[1]); // a是否属于group1bool b_group1 = (b[0]<=b[1]); // b是否属于group1if(a_group1&&b_group1){return a[0]<b[0]; // a,b都在group1,Group1按A_i降序排列}else if(!a_group1&&!b_group1){return a[1]>b[1]; // a,b都不在group1,Group2按B_i升序排列}else{return a_group1; // Group1优先于Group2}});int time_a = 0;int time_b = 0;for(int i=0;i<n;i++){time_a+=arr[i][0];time_b = max(time_a,time_b)+arr[i][1];// 开始时间取决于max(time_a,time_b)}cout<<time_b<<endl;return 0;
}

题目:

相关文章:

  • 重读《人件》Peopleware -(11)Ⅱ 办公环境 Ⅳ 插曲:生产力测量与不明飞行物
  • 浏览器原生 Web Crypto API 实现 SHA256 Hash 加密
  • 架构实践中,指标体系如何科学建立?构建指标体系的五层结构模型是什么?不同架构风格下的指标体系有怎样的差异?
  • 嵌入式软件架构规范之 - 分层设计
  • Cmake+VS2019MSVC编译器编译opencv4.10成功步骤
  • Kotlin 极简小抄 P10(类与对象、主构造函数、带有默认参数值的主构造函数、次要构造函数)
  • python——多线程编程(threading)
  • python实战:如何获取word文档中指定内容并作为新文件名
  • 鸿蒙 HarmonyOS NEXT 系统 Preference 首选项使用全解析
  • 偏微分方程数值方法指南及AI推理
  • springboot3+vue3融合项目实战-大事件文章管理系统-本地存储及阿里云oss程序集成
  • Linux操作系统的优势官方开发App应用程序有哪些优缺点
  • Java进阶之新特性
  • 中科视界,赋能文化产业新世界——千眼狼高速摄像机、DIC测量系统亮相第二十一届中国(深圳)国际文博会
  • VMIC PMV-5565PIORC-21000超高速光纤反射内存硬件参考
  • Argo CD 详解:从 GitOps 到持续交付的完整实践
  • Appium+python自动化(二)- 环境搭建—下
  • 鸿蒙 Initiated Worker with invalid NODE_OPTIONS env variable
  • N-gram语言模型原理与实战教程
  • Issac Lab安装
  • 云南省建设厅网站职称评审/项目推广方式有哪些
  • 网站平台建设多少钱/网络营销推广工具有哪些?
  • 合肥做网站费用/互联网运营自学课程
  • 小程序开发者工具下载/济南seo外贸网站建设
  • 建设网站采用的网络技术/方象科技的企业愿景
  • html国外网站源码/百度搜索引擎入口登录