资源简介
本文件包含了模拟退火算法的C源码,解决了工作指派问题,内部包含了该实验的要求,以及缩写的报告,简要的写出了本实验的设计思路
代码片段和文件信息
/*****************************************************************************
** Copyright: NEW NEU laboratory
** File name: SA_工作指派问题
** Description:模拟退火算法解决工作指派问题
** Author: 1702--GCJ
** Version: 1.0
** Date: 2017/10/4
** History: 无
*****************************************************************************/
#include“stdio.h“
#include“stdlib.h“
#include“string.h“
#include “time.h“
#include “math.h“
/*----------------------------------------------------
@brief 参数配置区
*/
#define WORK_NUM 50 //工作数量
#define WORKER_NUM 50 //工人数量
#define INIT_TEM (60 + WORK_NUM * 10) //初始温度
#define END_TEM 60 //终止温度
#define De_TEM 2 //降温函数
#define INTER_WHILE 500 //内循环次数 类似于邻居个数
typedef int ElementType;
ElementType **Time; //存储工人工作时间 指针
ElementType CurrentTem; //当前温度
//定义解的存储类型 向量形式
typedef struct _Solve{
ElementType *initSolution; //初始解 //每个元素对应的序号表示工人 总序号表示工人总数 内部元素表示工人对应的工作
ElementType *currentSolution; //当前解
ElementType * optimalSolution; //最优解
ElementType *tempSolution; //临时解
ElementType OptimalSolutionValue; //记录最优解 (总时间)
ElementType CurrentSolutionValue; //记录上次的值
ElementType NextSolutionValue ; //记录交换后的总时间
}StrSolve;//存储解结构
StrSolve * SolutionSpace ; //解空间(包含当前解和初始解)指针
typedef struct _Tabu{
int smallNum;
int bigNum; //存储数量大的元素
}Tabu; //禁忌表结构
typedef struct _MotionTable{
Tabu tabu; //存储改变的元素
ElementType changedistance; //改变的距离
}MotionTable;//记录2opt邻域移动信息
/*************************************************
**Function: MemBlockWork
**Description: 申请存储工人工作时间的空间
**Calls: 无
**Called By: ReadDataTxt()
**Input: 无
**Output: 无
**Return: 指向存储工人工作时间的指针
**Others: 无
*************************************************/
ElementType ** MemBlockWork();
/*************************************************
**Function: ReadDataTxt
**Description: 从txt文档中读取工人工作时间数据
**Calls: MemBlockWork()
**Called By: main()
**Input: 无
**Output: 无
**Return: void
**Others: 里面直接用的全局变量 指针Time
*************************************************/
void ReadDataTxt();
/*************************************************
**Function: CreateSolutionSpace
**Description: 创建并初始化解空间
**Calls: 无
**Called By: Init2Opt()
**Input: worker_num 工人数量
**Output: 无
**Return: StrSolve *指针变量
**Others: 不用这块内存的时候要逐一释放掉 !
*************************************************/
StrSolve *CreateSolutionSpace(int worker_num);
/*************************************************
**Function: GetInitSolution
**Description: 获得初始解
**Calls: 无
**Called By: Init2Opt()
**Input: StrSolve * 指针变量
**Output: 无
**Return: StrSolve *指针变量
**Others: 这里在初始化解的时候可以用其他元启发式算法得出一个较好的解 ! 工人工作不能重复及数组空间的数字不能重复
*************************************************/
void GetInitSolution(StrSolve * strSolve);
/*************************************************
**Function: Get2optSolution
**Description: 得到1个2邻域解 用tempSolution来存储
**Calls:
**Called By: SA()
*
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 21062 2017-10-05 09:21 data.txt
文件 252 2017-10-04 19:52 data1.txt
文件 2101141 2017-10-05 09:24 data3.txt
文件 408 2018-01-06 10:04 readme.txt
文件 16398 2018-01-06 09:58 SA.c
文件 172735 2018-01-06 09:59 SA.exe
文件 159812 2018-01-06 10:07 禁忌搜索算法试验报告.docx
- 上一篇:操作系统 多级目录管理
- 下一篇:模拟退火算法C实现解决了工作指派问题
相关资源
- 模拟退火算法C实现解决了工作指派问
- 基于labview的温度串口接收及波形显示
- 基于miracl的大数运算,有详细的说明
- SAP的4400多个实体类型清单
- SAR基础理论与编程
- CGANConditional Generative Adversarial Nets
- RSA加密解密
- RSA 1024 加密 解密
- Write an ALSA Driver
- Kingsoft.Office.Interop.Wpsapi.dll
- USABC测试手册
- SAP CO 操作手册
- SAP 超级bom配置文档+测试文档
- sama图库vsd文件
- 一份有关于SATA 技术介绍
- harris+ncc+ransac
- 粒子群算法和引力搜索算法
- 东风汽车公司SAP部门开发内部教材中
- sapgui7.30 &7.40
- simatic ProSave_v14 sp1
- RSA非对称加密
- RSA加密解密网络课程设计
- 使用ArcGISAPI实现多个弹窗弹出;多个
- SAP HR 工资状态和控制记录
- opencv2.4.9opencv_createsamples.exe和opencv_h
- Chirp Scaling算法处理RADARSAT-1数据_shar
- 用于sar图像预处理的Lee滤波
- 手把手微信jsapi公众号支付教程
- gmt-sar安装教程.docx
- RSA混合加密系统源码
评论
共有 条评论