- 积分
- 0
- 注册时间
- 2007-10-28
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2011-3-31 18:34:25
|
显示全部楼层
来自 大连理工大学
本帖最后由 cocoon 于 2011-4-9 20:19 编辑
Lug_opt.js脚本文件详解
使用SiPESC.OPT调用Abaqus优化计算的脚本Lug_opt.js
详解如下:
(注:Abaqus使用的脚本为Python, SiPESC.OPT使用的脚本文件为JavaScript,两个略有不同,其中双斜杠 // 后均为注释 )
//
// 创建一个优化模型对象,供后续程序使用。
var theModel = new OptModel;
//
// 设置优化模型的名称。
theModel.setModelName("Lug");
// 软件将迭代历史保存在以Lug为名的Table中
// 在查看优化结果时,要依据优化模型名选择相应的Table。
//
// 设置优化模型中优化变量的初始值以及上、下限。
theModel.setVariable( "innerRadius" , 0.015 ) ;
theModel.setVariableLowerLimit( "innerRadius" , 0.001 ) ;
theModel.setVariableUpperLimit( "innerRadius" , 0.023 ) ;
//
// 计算优化模型中目标函数值和约束函数值。
function eval( )
{
//经过上次优化处理后,模型对象theModel中会产生新的,算法判断较好的设计变量值。
//将新值赋给参数建模的参数。
var innerRadius = theModel.getVariable( "innerRadius" );
parser = new FileParser;
parser.open( "D:\\SIMULIA\\workspace\\parameterValues.txt"); // python 脚本python_Lug02.py从文件parameterValues.txt读取数据,你要更改数据文件的路径,要在python_Lug02.py和这里做相应修改。
parser.replaceString( 0, 7, innerRadius ); // 更新参数文件中的参数值。其中的0,7为参数值在文件中的起始和结束位置,软件提供相应的工具自动计算这两个位置的数值。
parser.close();
//运行计算软件来得到新的目标函数值
var abaqusExeFileName = "D:/SIMULIA/abaqus/6.9-1/exec/abq691.exe"
var arguments = new Array( "cae","noGUI=D:\\SIMULIA\\workspace\\python_Lug02.py" );
process = new Process;
process.execute( abaqusExeFileName , arguments );
print("===========finished.==========")
process.kill();
//从计算软件的输出文件中提取目标函数值
parser = new FileParser;
parser.open( "D:\\SIMULIA\\workspace\\maxMises.txt"); //打开输出文件。 python 脚本python_Lug02.py将结果保存到文件maxMises.txt中,你要更改数据文件的路径,要在python_Lug02.py和这里做相应修改。
var obj = parser.retriveString( 0, 17 ); // 从分析结果文件中提取最大Mises应力值,其中的0,17为最大Mises应力值在文件中的起始和结束位置,软件提供相应的工具自动计算这两个位置的数值。
theModel.setObject( "obj" , obj );
parser.close();
// showing result
print("innerRadius = " + innerRadius )
print("maxMises = " + obj + "\n")
}
//
// 使用优化变量的初始值对优化模型初始化。
eval( );
//
// 设置优化算法参数。
GA.setMINMAX( -1 );
GA.setGENERATION( 150 );
GA.setPOPULATIONSIZE( 30 );
GA.setMUTATIONPROBABILITY( 0.1 );
GA.setCROSSOVERPROBABILITY( 0.8 );
var Solver = GA ;
// 软件提供了BFGS, SLP,SQP,GA,DGA(可处理离散设计变量的GA算法)等优化算法模块,
// 注:这里使用了遗传算法(GA),如要使用BFGS, SLP,SQP等算法,只需要将GA更换成相应的算法名即可。
// 当然BFGS, SLP,SQP等算法的参数与GA算法有不同之处,例如,若要使用SLP算法,上面这一段脚本命令只需要更换为
// SLP.setMINMAX( -1 );
//
// var Solver = SLP ;
//
// 使用优化模型初始化优化算法。
Solver.initialize( theModel );
//
// 初始化数据库,以备存储优化迭代过程中优化模型数据。
ModelSaver.executeSQLCommand( "DROP TABLE IF EXISTS Lug" );
ModelSaver.initializeModel( theModel );
//
// 开始优化迭代计算。
do{
eval();
// 将优化模型信息,保存到数据库中,数据库名默认为OptimizationDB
ModelSaver.save( theModel );
Solver.renewModel( theModel );
}while( ! Solver.isComplete() ) // 如果未满足终止条件,则继续迭代 |
|