您的位置:首页 > 编程语言

一个优化算例的脚本代码

2015-11-16 20:18 387 查看
一个优化算例的脚本代码

//
//
// This file is generated by SiPESC.Opt
//         COPYRIGHT (C) , 2009
//
//
//         ALL RIGHTS RESERVED
//
//
//           2011 . 04. 16
/////////////////////////////////////////////////

print("HaloRendezvous 2.5   Using GA algorithm "  + "\n")
//
//
// 创建一个优化模型对象,供后续程序使用。
var theModel = new OptModel;

//
// 设置优化模型的名称。
theModel.setModelName("Halo25");

//
// 设置优化模型中优化变量的初始值以及上、下限。
theModel.setVariable( "t0" ,  75 ) ;
theModel.setVariableLowerLimit( "t0" ,  0 ) ;
theModel.setVariableUpperLimit( "t0" ,  180 ) ;

theModel.setVariable( "tf" ,  178.6 ) ;
theModel.setVariableLowerLimit( "tf" ,  0 ) ;
theModel.setVariableUpperLimit( "tf" ,  180 ) ;

//
// 计算优化模型中目标函数值和约束函数值。
function eval( )
{
var t0 =  theModel.getVariable( "t0" );
var tf =  theModel.getVariable( "tf" );

// 工作目录
var workingDirectory = "D:/sipopt/bin/"

// 生成一个名为parameterFile的FILE对象
parameterFile = new FILE;

//  设置文件名为
parameterFile.setFileName( workingDirectory + "Input_Data.txt" );

//以模式2打开文件,
state = parameterFile.open(2);
// 如果返回值为false,则输出警告信息。
if( !state )
{
print("open result file failed.");
}

//  向文件中写入变量  以及一个换行符\n
parameterFile.write( t0 + "\r\n" );
parameterFile.write( tf + "\r\n" );

//将缓冲池中的数据写入文件中。
parameterFile.flush();

//关闭文件result
parameterFile.close();

//运行计算软件来得到新的目标函数值
var exeFileName = "HaloRendezvous25.exe"

process = new Process;
process.setWorkingDirectory( workingDirectory );
process.execute( workingDirectory +  exeFileName   );

print("=========== " + exeFileName + "  finished.==========");

// 文件名
var parameterFilePath = workingDirectory + "Output_Data.txt";

// 生成一个名为fooParser的FileParser对象
var fooParser = new FileParser;

//  指定文件名,并尝试打开文件。
fooParser.open( parameterFilePath );

var line = fooParser.readLine();
var energy = parseFloat(line);

//  关闭文件
fooParser.close();

print("t0 = " + t0  + "\n")
print("tf = " + tf  + "\n")

print("energy = " + energy  + "\n")

theModel.setObject( "energy" , energy );

}

//
// 使用优化变量的初始值对优化模型初始化。
eval( );

// 设置优化算法参数。
GA.setMINMAX( -1 );
GA.setGENERATION( 30 );
GA.setPOPULATIONSIZE( 30 );
GA.setMUTATIONPROBABILITY( 0.1 );
GA.setCROSSOVERPROBABILITY( 0.8 );

var Solver =  GA ;

/************
SQP.setMINMAX( -1 );
SQP.setMaxIterationNumber( 100 );

var Solver =  SQP ;

SLP.setMINMAX( -1 );
SLP.setMaxIterationNumber( 100 );

var Solver =  SLP ;
**********/
//
// 使用优化模型初始化优化算法。
Solver.initialize( theModel );

//
// 初始化数据库,以备存储优化迭代过程中优化模型数据。
ModelSaver.executeSQLCommand( "DROP TABLE IF EXISTS Halo25" );
ModelSaver.initializeModel( theModel );

//
// 开始优化迭代计算。
do{
eval();
ModelSaver.save( theModel );
Solver.renewModel( theModel );
} while(  ! Solver.isComplete() )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: