Qt 大作业设计文档
学号:2011011239 姓名:王庆 班级:计算机科学与技术系 13 班 助教:倪佳才
设计思路:
1. 第一步实现在 MainWindow 窗口打开文件,并将其读入 textBrowser。(注:大作业写了
好多的版本,自己都不会改,得到的经验:一个功能一个功能的实现,每写成一个功能
运行一下,这样就知道自己的问题出在哪里!另外需要自己读懂老师给的代码的功能)
2. 在 MainWindow 窗口设计一个 pushbutton 按钮,点击它可以随机生成一组序列对,并随
机画图
3. 在 MainWindow 窗口设计一个 pushbutton2 按钮,点击它可以进行模拟退火,直到找到
一个基本上的最小解。
退火的思路:
* J(y):在状态 y 时的评价函数值
* Y(i):表示当前状态
* Y(i+1):表示新的状态
* r: 用于控制降温的快慢
* T: 系统的温度,系统初始应该要处于一个高温的状态
* T_min :温度的下限,若温度 T 达到 T_min,则停止搜索
*/
while( T > T_min )
{
dE = J( Y(i+1) ) - J( Y(i) ) ;
if ( dE >= 0 ) //表达移动后得到更优解,则总是接受移动
Y(i+1) = Y(i) ; //接受从 Y(i)到 Y(i+1)的移动
else
{
// 函数 exp( dE/T )的取值范围是(0,1) ,dE/T 越大,则 exp( dE/T )也
if ( exp( dE/T ) > random( 0 , 1 ) )
Y(i+1) = Y(i) ; //接受从 Y(i)到 Y(i+1)的移动
}
T = r * T ; //降温退火 ,0<r<1 。r 越大,降温越慢;r 越小,降温越快
/*
* 若 r 过大,则搜索到全局最优解的可能会较高,但搜索的过程也就较长。若 r 过小,则搜索的
过程会很快,但最终可能会达到一个局部最优值
*/
i ++ ;
}
随机数的使用方法:
#include<iostream>
#include<cstdlio>
#include<cstdio>
#include<cmath>
Using namespace std;
int main()