程序设计课程设计1
需积分: 0 138 浏览量
更新于2022-08-08
收藏 26KB DOCX 举报
在这个程序设计课程设计中,学生们被分配了一个名为《JobShop》的程序设计任务,主要目标是解决作业调度问题。这个任务涉及到使用Java编程语言,通过设计和实现不同的模块来优化工作流程。以下是关键知识点的详细说明:
1. **高层数据结构设计**:
- `time_min`:用于存储所有作业完成的最短时间。
- `num_p`:表示产品数量。
- `num_m`:表示机器数量。
- `all_gongjian`:记录一个解决方案中所有机器需要加工的工件总数。
- `all_mach`:存储不同机器方案的总数。
- `p_gongjian` 和 `m_gongjian`:分别用于存储不同产品工件的运行加工总数和不同机器上的工件运行总数。
- `process`:三维数组,存储产品次序、加工时间、机器信息。
- `machine`:四维数组,存储机器信息,包括机器编号、运行程序次序、时间和产品信息。
- `better` 和 `Best`:存储较优的工序排序和最终最优解。
- `time_youxiu` 和 `time_zuiyou`:分别存储较优时间和最优时间。
- `changepin`、`time_m` 和其他相关变量:用于处理和计算作业和机器的安排。
2. **输入与输出模块**:
- `put_in.h`、`fput_in.h` 和 `tput_in.h`:分别负责键盘输入、文件输入和图形化输入,将数据保存在公共变量中。
- `schedule.h`:处理工序优先级分配、调度计算和总时间计算。
- `put_out.h`、`fput_out.h` 和 `tput_out.h`:分别负责命令行输出、文件输出和图形化输出。
3. **算法设计**:
- **遗传算法**:采用生物进化理论,通过复制、交叉和突变等操作来生成下一代解决方案,逐步淘汰较差的解,增加较优解,以求找到近似最优解。
- **编码**:实验数据需要被编码以便于遗传算法处理。
- **初始种群**:生成一组随机的初始个体,代表可能的解决方案。
- **适应度计算**:为每个个体计算其适应度值,反映其解决方案的质量。
- **迭代过程**:直到达到预设的迭代条件(如时间限制或找到较优解)。
- **选择、交叉和变异**:在每一代中,根据适应度选择优秀个体进行交叉和变异操作,生成新一代。
- **解码**:最后将找到的最优解解码,得出实际的作业调度方案。
4. **辅助函数**:
- `zhuangma_changpin_mach`:将`changepin`转换为`machine`数组。
- `print_changpin` 和 `print_mach`:分别输出`changepin`和`machine`数组。
- `input_file_changpin`、`input_jianpan_changpin`:从文件和键盘读取输入数据。
- `output_file_best`:将最佳解写入文件。
- `jiaohuan`:交换两个整数的值。
- `mach_machine`:交换`machine`数组中的元素。
- `c_time` 和 `time_mach`:计算`changepin`和`machine`数组的时间。
- `create_parent`、`bianyi_changpin` 和 `xiugai_end`:用于遗传算法中的种群生成、变异和错误序列修正。
这个课程设计旨在通过实际编程实践,让学生掌握如何运用数据结构和算法解决实际问题,特别是利用遗传算法解决复杂优化问题的能力。通过这个项目,学生不仅学习了Java编程,还掌握了输入输出处理、数据结构的设计以及高级算法的应用。