当前位置:编程学习 > VB >>

有没有高手帮我把这段VC代码改成VB代码或者翻译一下,太急了,来不及看书,跪求

建立一个遗传算法类POP:
//class pop.h
#include<cstdlib>
#include<ctime>//统计时间
#include<iostream>//输入输出流使用
#include <math.h>//幂函数使用
using namespace std;
class pop
{
public:
unsigned int *initPOP;//父代种群指针
unsigned int *curPOP;//下一代种群指针
int POPSIZE;//种群规模
double FSUM;//种群所有个体适应度总和
int LENGTH;//基因长度
float CROSSSTAT;//交叉概率
double (*fitness)(unsigned int a);//储存适应度函数入口地址
//构造函数
pop(unsigned int *init,int size,int length,double (*func)(unsigned int a),float cross_stat);
~pop(); //析构函数
void mutation(float stat,int mutation_num,int bit_num);//随机位点变异
void cross_over3(float stat,unsigned int &org1,unsigned int &org2);//与或交叉
void cross_over2(float stat,unsigned int &org1,unsigned int &org2);//两点交叉
void cross_over1(float stat,unsigned int &org1,unsigned int &org2);//单点交叉
void generate();//子代更替
void propagate();//选择交叉过程(包括最优个体保存)
int selection();//轮盘赌选择
}
//pop.cpp
#include "stdafx.h"
#include "pop.h"
//构造函数
pop::pop(unsigned int* init,int size,int length,double (*func)(unsigned int a),float cross_stat)
{
//设置随机种子
time_t a;
srand(time(&a));
POPSIZE = size;
LENGTH = length;
initPOP = new unsigned int [POPSIZE];
curPOP = new unsigned int [POPSIZE];
CROSSSTAT = cross_stat;
fitness = func;
for (int i=0;i<POPSIZE;i++)
{
initPOP[i] = init[i];
curPOP[i] = initPOP[i];
}
};
//析构函数
pop::~pop()
{
};
//选择交叉操作
void pop::propagate()
{
FSUM = 0.0;
for (int i = 0;i<POPSIZE;i++)

FSUM += 1.0/(fitness(initPOP[i])+1.0);
}
//选择上一代中最优解复制两次加入子代
double max=0.0;
int maxj;
for (int j=0;j<POPSIZE;j++)
{
if ((1.0/(fitness(initPOP[j])+1.0)) > max)
{
max = 1.0/(fitness(initPOP[j])+1.0);
maxj = j;
}
}
curPOP[0] = initPOP[maxj];
curPOP[1] = initPOP[maxj]; VC、VB高手 --------------------编程问答-------------------- 不要做A语言代码修改为B语言代码的无用功。
也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。
只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。
即可很方便地让A、B两种语言之间协调工作。
--------------------编程问答-------------------- 转换一个类模块,VB没有构造函数,你可以创建一个初始化函数,在主程序中显示调用并传递参数,
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,