找回密码
 注册
Simdroid-非首页
查看: 95|回复: 3

[二次开发] 优化设计变量可以离散不?

[复制链接]
发表于 2011-5-16 01:00:20 | 显示全部楼层 |阅读模式 来自 陕西西安
求高手解答下,比如我向设计变量在我建立的数组中取值。
发表于 2011-5-25 20:52:31 | 显示全部楼层 来自 大连理工大学
Simdroid开发平台
设计变量可以取离散值
回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-26 00:49:24 | 显示全部楼层 来自 陕西西安
如何做呢?请指点下
回复 不支持

使用道具 举报

发表于 2011-5-26 20:05:19 | 显示全部楼层 来自 大连理工大学
本帖最后由 cocoon 于 2011-5-26 20:21 编辑

在SiPESC.OPT的 benchmarks\benchmark_9 中,example9就是一个设计变量使用离散值的例子

  1. //   
  2. //  
  3. // This file is generated by SiPESC.Opt
  4. //         COPYRIGHT (C) , 2009  
  5. //   
  6. //   
  7. //         ALL RIGHTS RESERVED  
  8. //      
  9. //         
  10. //           2010 . 11. 29
  11. /////////////////////////////////////////////////

  12.    
  13. //
  14. // 创建一个优化模型对象,供后续程序使用。
  15. var theModel = new OptModel;

  16. //
  17. // 设置优化模型的名称。
  18. theModel.setModelName("example9");


  19. //
  20. // 设置优化模型中优化变量的初始值以及上、下限。
  21. theModel.setVariable( "x1" ,  5.31 ) ;
  22. theModel.setVariable( "x1" ,  Array( 0,2,3,4.5,5.31,6.2,8 ) );

  23. theModel.setVariable( "x2" ,  3.2 ) ;
  24. theModel.setVariableLowerLimit( "x2" ,  0 ) ;
  25. theModel.setVariableUpperLimit( "x2" ,  6 ) ;

  26. theModel.setVariable( "x3" ,  -2 ) ;
  27. theModel.setVariable( "x3" ,  Array( -6,-5,-3,-2,-1,1 ) );


  28. //
  29. // 计算优化模型中目标函数值和约束函数值。
  30. function eval( )
  31. {
  32.    var x1 =  theModel.getVariable( "x1" );
  33.    var x2 =  theModel.getVariable( "x2" );
  34.    var x3 =  theModel.getVariable( "x3" );

  35.    var obj = (x1-5.5)*(x1-5.5)+Math.cos(x2)+(x3+2.15)*(x3+2.15);
  36.    theModel.setObject( "obj" , obj );

  37. }


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

  41.   

  42. //
  43. // 设置优化算法参数。
  44. DGA.setMINMAX( -1 );
  45. DGA.setGENERATION( 150 );
  46. DGA.setPOPULATIONSIZE( 30 );
  47. DGA.setMUTATIONPROBABILITY( 0.1 );
  48. DGA.setCROSSOVERPROBABILITY( 0.8 );
  49.   
  50. var Solver =  DGA ;

  51. //
  52. // 使用优化模型初始化优化算法。
  53. Solver.initialize( theModel );

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

  58. //
  59. // 开始优化迭代计算。
  60. do{  
  61.   eval();  
  62.   ModelSaver.save( theModel );
  63.   Solver.renewModel( theModel );
  64. } while(  ! Solver.isComplete() )
复制代码
参看 第26行 和第33行
设计变量是离散值时,只能使用 DGA算法也就是能处理离散变量的遗传算法。
如有疑问,欢迎继续探讨。

关于SiPESC.OPT软件,可以参考
http://forum.simwe.com/thread-976523-1-1.html
http://forum.simwe.com/thread-972046-1-1.html
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 10:34 , Processed in 0.030593 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表