QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5334|回复: 2
打印 上一主题 下一主题

[问题求助] 下载了《精通MATLAB最优化计算》书上的优化程序,用它来做杆机构的优化,我的目标函..

[复制链接]
字体大小: 正常 放大

3

主题

4

听众

150

积分

升级  25%

  • TA的每日心情
    开心
    2012-11-3 11:34
  • 签到天数: 41 天

    [LV.5]常住居民I

    跳转到指定楼层
    1#
    发表于 2012-2-27 12:25 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    10体力
    想用里边的惩罚函数程序来算,我的目标函数是用for循环写的。不会导入。4 u, r( c4 T' K9 S7 g2 P1 I' f8 n
    惩罚函数调用格式如下:5 Q( r  V" x" ?, |& \+ h
    function [x,minf] = minMixFun(f,g,h,x0,r0,c,var,eps)
    * E2 T( @1 b* r%目标函数:f) P$ Y4 x9 Q- p0 Z7 B" f% Z
    %不等式约束:g8 k" f  x3 {" @' e
    %等式约束:h- w; O% N' t  p0 A/ c
    %初始点:x0, u, ?. ]. q/ _& ]' s
    %罚因子:r0$ w# i+ I! `5 B& J7 a! G
    %缩小系数:c( b) x* Z1 h/ r
    %自变量向量:var3 \& @  N- ?" e8 t; q$ i, A
    %精度:eps4 S, ?. A) S* u1 D' M
    %目标函数取最小值时的自变量的值:x
    - {3 \2 F3 X$ ^9 x! C3 B%目标函数的最小值:minf
    7 G0 a5 t3 e7 z1 H4 @, ?
    2 a7 f  B- _8 _& n
    / o3 b& x! O$ O) Q目标函数:! u, P5 I/ M" A  x
    function f=link_objfun1(x)
    0 N* v1 ^9 U* e& r) ^! G' Oglobal L1 L5
    6 I9 [# ]! E, [' G1 ef=0;
    9 k1 a% P0 D$ Lsnti0=0;
    / E" w) G3 y( d# }! U- gfor i=0:5% U+ S; P, F+ _
    snti=snti0+pi/6*i/5; 8 G6 G8 v! l/ n
    fai=acos((L1-x(1)*sin(snti+x(5)))/(L1^2+x(1)^2-2*L1*x(1)*sin(snti+x(5)))^1/2);
    & b3 E; r/ c/ I+ W5 spsai=acos(2*(L1^2+x(1)^2+x(3)^2-x(2)^2-2*L1*x(1)*sin(snti+x(5)))/(x(3)*(L1^2+x(1)^2-2*L1*x(1)*sin(snti+x(5)))^1/2));) j- X/ h0 o  v2 k$ {8 e3 ?" T
    if snti<=pi/2-x(5)
    8 n; c0 h& G4 ?% k8 `   bati=fai+psai+acos(x(4)/x(3));
    & E9 A* I( a# y- T5 yelseif snti>pi/2-x(5)$ |8 ]0 Y8 {2 H& b6 T
       bati=-fai+psai+acos(x(4)/x(3));1 ^6 V! @/ Z$ q5 h
    end
    ! m: Y" I' V: K9 T: k: gf=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;; J4 ]) D, s: y1 P
    end, F" B6 T3 k- j" |
    7 y3 ?* |% `# y2 b: K( S
    3 T5 Y1 `' }) z# K. ~5 P" {" N& ^
    请诸位帮帮忙,我的体力不多。

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    1341

    主题

    738

    听众

    2万

    积分

    数学中国总编辑

  • TA的每日心情

    2016-11-18 10:46
  • 签到天数: 206 天

    [LV.7]常住居民III

    超级版主

    社区QQ达人 邮箱绑定达人 元老勋章 发帖功臣 新人进步奖 原创写作奖 最具活力勋章 风雨历程奖

    群组2011年第一期数学建模

    群组第一期sas基础实训课堂

    群组第二届数模基础实训

    群组2012第二期MCM/ICM优秀

    群组MCM优秀论文解析专题

    回复

    使用道具 举报

    3

    主题

    4

    听众

    150

    积分

    升级  25%

  • TA的每日心情
    开心
    2012-11-3 11:34
  • 签到天数: 41 天

    [LV.5]常住居民I

    我懂的不多,生搬硬套。书上的例题
    , M7 f1 T; U' ]' h0 {+ i  R运行如下:7 y" H! O3 @+ p9 Z6 n
    syms t;( V0 p( m# S" ~2 V
    a=4;b=3;
    4 ?' d) @( x. `3 C2 Df=a*t;: B) @- {! j# F5 p
    g=[t-b];
    1 R2 |5 I7 D1 t4 N4 r2 Z[x,minf]=minNF(f,[5],g,10,0.5,[t])
    & l- m& S; b  P6 u# E; H. n4 A我将目标函数写成:9 |/ R; L& x/ O9 R
    function f=link_objfun(s,t,a,m,n)
    & i3 O' [6 U" T3 N9 w1 uglobal L1 L5
    . @4 d! \4 I0 W  l. N( mf=0;* u+ @3 V1 y! x7 l1 Y' |2 ]
    snti0=0;
    / E; d' Z" {+ `for i=0:5! k% d, n$ j& O  v6 \# o0 x
    snti=snti0+pi/6*i/5; ! a' p6 J" b5 g" ^4 E; C5 [
    fai=acos((L1-s*sin(snti+n))/(L1^2+s^2-2*L1*s*sin(snti+n))^1/2);$ K9 C6 B$ j- W" }
    psai=acos(2*(L1^2+s^2+a^2-t^2-2*L1*s*sin(snti+n))/(a*(L1^2+s^2-2*L1*s*sin(snti+n))^1/2));
    + T7 ?% z- B; d# M( Dif snti<=pi/2-n
    " C$ N7 H) x4 i1 t# T% {! ?& K2 T   bati=fai+psai+acos(m/a);
    ! N5 p' i. F& ?; Zelseif snti>pi/2-n( W" W5 U% Q6 v2 i% W
       bati=-fai+psai+acos(m/a);- i5 n6 E8 }5 j1 T* i4 }( y# p# F
    end
    2 G. y9 F" u- Y  s$ \' o6 ^f=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;) {, ?! J% Y: D
    end8 c# Y& ^  o3 n! b
    运行如下:' L" U2 u% E$ B6 X: b- U) m, _
    clear all;
    & Y6 X; z7 h; \) K: T9 X, ]global L1 L5& t% }1 o+ G2 f7 L4 H
    L1=3000;( o6 t' w9 W7 `+ h' g$ K
    L5=800;/ Q- s$ B% B1 Q# S
    syms s t a m n;
    " @/ I. T! L( s; H" {6 D8 Jf=link_objfun;
    0 p' C% O( z( \+ g# Pg=[s;t;a;m;n;L1-s;t-s;a-s;a-s-t+L1;s+t+a-L1;s+t+a-m];2 y4 M2 J5 D/ N9 g6 F3 d. J
    [x,minf]=minNF(f,[780 2000 800 800 pi/12],g,15,0.6,[s t a m n])
    ( a5 a% b  Z3 ]1 d" |??? Input argument "s" is undefined.& g8 Y3 q# Y0 b0 [9 w  F0 I6 o' B9 f

    " I" |4 c; Y. p; `Error in ==> link_objfun at 7# d6 O6 U( ?1 D5 \9 d
    fai=acos((L1-s*sin(snti+n))/(L1^2+s^2-2*L1*s*sin(snti+n))^1/2);
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-6 17:08 , Processed in 0.475775 second(s), 64 queries .

    回顶部