一个优化算例的脚本代码
//
//
// 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() )