QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5511|回复: 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循环写的。不会导入。. B; o* Y; ~0 t! N/ R
    惩罚函数调用格式如下:8 e* h/ J0 H; L! N9 i8 G
    function [x,minf] = minMixFun(f,g,h,x0,r0,c,var,eps): M9 _% u% d- f# q0 a* \" W5 s  l
    %目标函数:f+ r; y8 r% z) z! L6 T
    %不等式约束:g8 a' r' e! [" Z0 k
    %等式约束:h1 R4 b7 C8 l' \6 \% ?$ M! @: I
    %初始点:x0
    + c2 G7 L5 E$ X5 a- N; l%罚因子:r0
    & e. Q: i9 B& e5 ~. N' a%缩小系数:c
    2 ~( Y' }" n4 g%自变量向量:var8 j; s, o) x8 V; {" p: J5 ?: h
    %精度:eps
    6 v# F9 g" ~$ j- x+ W* W%目标函数取最小值时的自变量的值:x6 `  i$ r8 |, u9 q6 v$ h3 f
    %目标函数的最小值:minf
    - Y6 f- L' d% x6 s: Y# h/ V$ D& B
    - [+ D: |  z3 @
    目标函数:. r% d4 i+ _4 w
    function f=link_objfun1(x)
    & s" e& p2 G( H8 l! E4 ~9 |global L1 L59 H% b5 F/ t2 Q# w
    f=0;
      ?) \  j: H1 Tsnti0=0;
    * S  ]" [1 k. \9 Z: u, b4 }for i=0:5* u( i( }7 O& A* s7 T$ v
    snti=snti0+pi/6*i/5; 3 a! t) x# a& H" c% `4 L- u
    fai=acos((L1-x(1)*sin(snti+x(5)))/(L1^2+x(1)^2-2*L1*x(1)*sin(snti+x(5)))^1/2);& w$ D) h/ Y1 V) {
    psai=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));
    , G6 \* o2 k9 B5 _3 A9 f; Y" w- J) j# gif snti<=pi/2-x(5)6 h& p# k8 e2 t0 ^- z; Q
       bati=fai+psai+acos(x(4)/x(3));
    + b- q% L3 f4 C, Felseif snti>pi/2-x(5)# k& U% i$ F2 g
       bati=-fai+psai+acos(x(4)/x(3));9 c# m9 }9 D! E0 o- {
    end
    2 W4 \/ L# _' b6 E; R6 nf=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;
    4 d0 d0 U* \" s% R" `5 a1 nend
    / U5 }# H& l& n" v# o7 g) m( D% h5 o+ K' c/ I' {
    # _2 A3 h  h$ T$ h4 y* O" \
    请诸位帮帮忙,我的体力不多。

    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

    我懂的不多,生搬硬套。书上的例题
    2 \) Z# [6 J' |" p% n- A% ]1 N运行如下:
    3 ^) v0 k4 w( @. P+ }' m. l" n) ^0 Csyms t;
    5 F1 s  s& W  o" ^: {/ F, Ma=4;b=3;; S0 z4 |7 O' U9 g8 ]
    f=a*t;* [. D- _; P5 N/ v1 e: g- c
    g=[t-b];+ i3 `( [9 I% }. i, i' S/ V$ b, @9 R
    [x,minf]=minNF(f,[5],g,10,0.5,[t])7 Y0 t' ?: S! e7 a% ?* @
    我将目标函数写成:
    , p- ^) ?0 K1 f9 Lfunction f=link_objfun(s,t,a,m,n)9 f% V7 R% |' A) F6 F. O
    global L1 L5
    ( P" x4 }. t, df=0;
    . K/ ^' o! \: m5 r1 g6 gsnti0=0;' g- j# n9 F) f* w3 g
    for i=0:5
    9 A8 Z/ c& k: ]# J" w4 nsnti=snti0+pi/6*i/5; ( ~3 u- N; W& c
    fai=acos((L1-s*sin(snti+n))/(L1^2+s^2-2*L1*s*sin(snti+n))^1/2);4 b: P% U- _5 [$ I( K
    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));# \7 p/ y" A" r4 O( H5 r
    if snti<=pi/2-n! H3 N- v* u: F. y
       bati=fai+psai+acos(m/a);
      V- S2 I% }3 a8 j4 l  {elseif snti>pi/2-n
    ! d/ d6 r* P; ^/ I4 ~: I5 U   bati=-fai+psai+acos(m/a);) l, G  |; U6 z3 Z
    end
    : N7 R  c& a4 cf=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;
    6 c2 K' n( W- v' Send
    0 n% r5 E6 ]9 G4 W运行如下:# ?  U  Q9 k/ y; q' C% r
    clear all;
    - V& {) Q( _0 {' E8 x2 L4 `global L1 L5' y+ `) ?9 R3 C- M, t* J$ Q( L
    L1=3000;" b" H* E3 O) u" r8 P
    L5=800;
    . y4 ^" n: z, U9 ]$ `$ _4 wsyms s t a m n;
    / P' f* r! v! A% [- ?$ ^f=link_objfun;2 W; x; o$ O- c6 P2 ?  x
    g=[s;t;a;m;n;L1-s;t-s;a-s;a-s-t+L1;s+t+a-L1;s+t+a-m];
      Y* e7 i1 T5 i/ T* c. W[x,minf]=minNF(f,[780 2000 800 800 pi/12],g,15,0.6,[s t a m n])
    7 \. a# H7 R+ }2 h" h??? Input argument "s" is undefined.
    + m6 z: Q% Y+ f, z2 x- k, ^; _3 O) Q! d2 ~
    Error in ==> link_objfun at 7
    ) w. ]! c4 N0 V3 j9 J5 ffai=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-10-8 09:43 , Processed in 0.569339 second(s), 64 queries .

    回顶部