⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parasetdlg.cpp

📁 这是一个利用遗传算法求解函数极值
💻 CPP
字号:
// ParaSetDlg.cpp : implementation file
//

#include "stdafx.h"
#include "GA.h"
#include "ParaSetDlg.h"

#include "GADlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CParaSetDlg dialog


CParaSetDlg::CParaSetDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CParaSetDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CParaSetDlg)
	m_pcross = 90;
	m_maxgen = 150;
	m_pmutation = 5;
	m_popsize = 100;
	m_precision =4;
	//}}AFX_DATA_INIT
}


void CParaSetDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CParaSetDlg)
	DDX_Text(pDX, IDC_CROSSEDIT, m_pcross);
	DDV_MinMaxInt(pDX, m_pcross, 0, 100);
	DDX_Text(pDX, IDC_GENEDIT, m_maxgen);
	DDV_MinMaxInt(pDX, m_maxgen, 1, 200);
	DDX_Text(pDX, IDC_MUTATEDIT, m_pmutation);
	DDV_MinMaxInt(pDX, m_pmutation, 0, 100);
	DDX_Text(pDX, IDC_POPEDIT, m_popsize);
	DDV_MinMaxInt(pDX, m_popsize, 2, 250);
	DDX_Text(pDX, IDC_PREEDIT, m_precision);
	DDV_MinMaxInt(pDX, m_precision, 0, 10);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CParaSetDlg, CDialog)
	//{{AFX_MSG_MAP(CParaSetDlg)
	ON_BN_CLICKED(IDC_DEFAULT, OnDefault)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CParaSetDlg message handlers

void CParaSetDlg::OnOK() 
{
	// TODO: Add extra validation here
	CString strmebo;
	float precision=0;
	UpdateData();
/*	if(0==m_popsize || 1==m_popsize)
	{
		strmebo.Format("种群规模不能为0或1");
		AfxMessageBox(strmebo);  return;
	}*/
	if(0==m_pcross && 0==m_pmutation)
	{
		strmebo.Format("交叉概率和变异概率同时不能为0");
		AfxMessageBox(strmebo);  return;
	}
	
/*	int indot=0,strlen;
	indot=m_strPre.Find('.');
	if(indot==-1)
	{
		strmebo.Format("程序会把精度设为1。");
		AfxMessageBox(strmebo);
		precision=1;
	}
	else
	{
		strlen=m_strPre.GetLength();
		for(int i=strlen-1;i>indot;i--)
		{
			if(m_strPre[i]>='0' && m_strPre[i]<='9')
			{
				precision+=(m_strPre[i]-48);
				precision/=10;
			}
			else
			{
				strmebo.Format("请重新输入精度值.");
				AfxMessageBox(strmebo);
				return ;
			}
		}
	}
	m_precision=precision;*/
/*	strmebo.Format("m_precision=%g,",m_precision);
	AfxMessageBox(strmebo);*/
	CDialog::OnOK();
	
}

void CParaSetDlg::OnDefault() 
{
	// TODO: Add your control notification handler code here
	m_pcross=90;
	m_pmutation=5;
	m_maxgen=100;
	m_popsize=150;
	m_precision=4;
/*	m_strPre.Format("%g",m_precision);
	((CEdit*)GetDlgItem(IDC_PREEDIT))->SetWindowText(m_strPre);*/
	UpdateData(FALSE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -