zoukankan      html  css  js  c++  java
  • 普通电梯调度算法

    普通电梯调度算法

    GitHub: https://github.com/StolfdaInuit/object-oriented

    编写程序的代码行数 调试的bug数 完成该次作业总耗时
    277行 2个 1h

    文件清单

     elevator-scheduling(normal)
    	 main.cpp // 策略:估计当前 向上、向下、停靠 三类行动的耗时,采用预估耗时最少的
    	
     BIN
         elevator.exe // 运行一次测试五组数据
         input.txt // 包含所有的五组测试数据
         output.txt // 包含所有的五组测试结果
    

    优化过程

    问题给出的要求是实现一个正常的电梯调度算法,因为之前的作业就是当正常电梯来写的,所以在之前代码的基础上稍微改改就行了。
    不过考虑到贪心算法很容易忽略掉一些条件,又重新整理了一遍公式。
    下次如果还写电梯,打算用深搜了,贪心毕竟还是不够对口,虽然感觉如果考虑实际情况下的嵌入式算法可能贪心会更容易用到。。

    总结了一下基本的运行流程:

    电梯每一秒执行如下操作:

    1. 遍历乘客信息,获取有效的目的地信息。
    
    2. 目的地指:【已发出请求的未上电梯的乘客的起始楼层】 以及 【已上电梯的乘客的去往楼层】。
    
    3. 把所有目的地归纳为三大类:向上,向下,停靠。
    
    4. 对运行目标按照以下规则进行选择:
    估计当前 向上、向下、停靠 三类行动的耗时,采用预估耗时最少的
    
    5. 执行当前运行目标。
    
    注:初始运行目标为停靠。
    

    另外还把测试模式改成多组数据,也就是运行一次测试五组数据
    因为没有考虑全局变量重置的问题,出了点小bug。


    文件读写

    #include<fstream>
    ......
    fstream(const char *, int = ios::in); // 有参构造函数
    void open(const char *, int =ios::in); // 打开文件
    bool is_open() const; // 检查文件是否正确打开
    void close(); // 关闭文件
    
    • 文件输出流类ofstream及文件输出
      – 【输出文本文件

      – 【输出二进制文件

    • 文件输入流类ifstream及文件输入
      – 【输入文本文件

      – 【输入二进制文件

    • 检查输入文件状态
      eof()检查文件是否已结束
      good()检查文件是否已损坏

    • 文件打开模式

    • 文件的随机读写
      – 文件输入流对象包含一个读文件指针
      – 文件输出流对象包含一个写文件指针

      istream& seekg(long bytes, ios::seek_dir origin); // 移动读文件指针
      long tellg(); // 返回当前读文件指针的位置
      ostream& seekp(long bytes, ios::seek_dir origin); // 移动写文件指针
      long tellp(); // 返回当前写文件指针的位置
      

    git commit 日志


    测试数据

    • 数据1:

    目的信息同时出现,电梯应当达到理论最优解
    0 5 8
    5 4 9
    5 2 5
    5 6 7
    5 8 2
    ```

    ```
    

    测试结果:
    64
    得到最优解,符合预测
    ```


    • 数据2:

    电梯应当在运行中掉头才能得到最优解
    0 1 9
    0 1 9
    0 1 9
    5 5 4
    5 5 4
    ```

    ```
    

    测试结果:
    43
    电梯掉头,符合预测
    ```


    • 数据3:

    电梯应当在运行中不掉头才能得到最优解
    0 1 8
    0 1 8
    0 1 8
    0 1 8
    3 6 1
    ```

    ```
    

    测试结果:
    46
    电梯不掉头,符合预测
    ```


    • 数据4:

    即使到达目的地也不能停,电梯应当优先满足多数人的需求
    0 1 8
    0 1 8
    0 1 8
    0 1 8
    3 3 7
    ```

    ```
    

    测试结果:
    44
    电梯中途未停,符合预测
    ```


    • 数据5:

    随机的较大数据,观察是否出现异常
    66666 3 9
    66667 7 2
    66660 5 2
    66663 8 9
    66673 1 9
    ```

    ```
    

    测试结果:
    80
    电梯正常运行
    ```

  • 相关阅读:
    请为新诗赐题
    ***套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的
    关于sum(int)报错:将expression转化为数据类型int时发生算术溢出错误
    【SSB】清空service broker中的队列
    【SSB 】Handling and Removing Poison Messages
    一淘网的系统架构
    WCF服务器已拒绝客户端凭据
    Web 安全威胁与对策
    SQL Prompt 4 破解步骤
    【SSB】Activation Execution Context
  • 原文地址:https://www.cnblogs.com/stolf/p/8443495.html
Copyright © 2011-2022 走看看