一个优化算例的脚本代码

一个优化算例的脚本代码

 

//   
//  
// 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() )  

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值