📄 vrp67.cpp
字号:
#include "Pso.h"
#include "MyPso.h"
#include <iostream.h>
#include "Particle.h"
#include "stdio.h"
//#include <afxdb.h>//database head files
//#include <afx.h>
#include <fstream.h>
//using namespace std;
//data只提供容量检查
double data[1][8] = {{1,2,1,2,1,4,2,2}};//容量限制
//全文中无用,这里由于不是采用坐标法,故无用注释之
//double point[2][1] = {{18},{54}};//改动8
int vehicleNum = 2;
int pDim = 8;//改动9
int pNum = 60;//compare with smu //个数必须设较大
double T = 3;
double B = 0.99;
double TEND = 0.01;
double c1 = 1;
double c2 = 1.49;
double wMax = 0.4;
double wMin = 0.4;
double vDown = -1;
double vUp = 1;
int xDown = 1;
int xUp = 2;
int iterMax = 50;
//CDatabase db;
void main()
{
MyPso pso(pDim, pNum); //生成微粒群实例
pso.Setc1(c1); //设置自变量上界
pso.Setc2(c2); //设置自变量下界
pso.SetwMax(wMax);
pso.SetwMin(wMin);
//设置最大速度
pso.SetvDowm(vDown);
pso.SetvUp(vUp);
pso.SetxDown(xDown);
pso.SetxUp(xUp);
cout << "\nRun Now:\n" ;
for(int test=0; test<1; test++)
{
//每次运行的时候都要设置iterMax;
pso.SetiterMax(iterMax);
pso.Run(iterMax); //运行微粒群
//输出
double *Result;
Result = new double[pDim];
cout << pso.GetBest(Result) << endl;
for(int i=0; i<pDim; i++)
cout << Result[i] <<" ";
cout <<endl;
//怎么存子程序的结果,是个问题;
double *sub_Result_Best;
sub_Result_Best = new double [vehicleNum*pDim];
pso.GetSubResult(sub_Result_Best);
for(int j=0; j<vehicleNum*pDim; j++)
{
cout << sub_Result_Best[j] << " ";
if((j+1)%pDim==0)
cout <<endl;
}
cout<<endl<<"end of one operation"<<endl;
//将结果写入数据库
/* if (db.IsOpen()==0)
{
db.Open("VRP");
}
CString inse;
inse.Format("insert into 8city values(%d,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f)"
,,,,
,sub_Result_Best[0], sub_Result_Best[1], sub_Result_Best[2], sub_Result_Best[3], sub_Result_Best[4], sub_Result_Best[5], sub_Result_Best[6], sub_Result_Best[7]
,
db.ExecuteSQL(inse);
*/
ofstream myf("f:\\ally.txt",ios::ate);
myf << pso.bestIter <<" "<< pso.GetBest(Result) << endl
<< Result[0]<<" "<<Result[1]<<" "<<Result[2]<<" "<<Result[3]<<" "<<Result[4]<<" "<<Result[5]<<" "<<Result[6]<<" "<<Result[7]<<endl
<< sub_Result_Best[0]<<" "<<sub_Result_Best[1]<<" "<<sub_Result_Best[2]<<" "<<sub_Result_Best[3]<<" "<<sub_Result_Best[4]<<" "<<sub_Result_Best[5]<<" "<<sub_Result_Best[6]<<" "<<sub_Result_Best[7]<<endl
<< sub_Result_Best[8]<<" "<<sub_Result_Best[9]<<" "<<sub_Result_Best[10]<<" "<<sub_Result_Best[11]<<" "<<sub_Result_Best[12]<<" "<<sub_Result_Best[13]<<" "<<sub_Result_Best[14]<<" "<<sub_Result_Best[15]<<endl
<<endl
<<endl
<<endl;
delete []Result;
Result = NULL;
delete []sub_Result_Best;
sub_Result_Best = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -