QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5264|回复: 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循环写的。不会导入。
    9 e/ O0 s+ G4 i. f0 O1 w$ h! A* ^惩罚函数调用格式如下:) u: F% N+ P) u$ A/ M; c
    function [x,minf] = minMixFun(f,g,h,x0,r0,c,var,eps)
    4 [2 V  x! N/ V( o, B, E%目标函数:f  `6 j$ w+ Y8 a% v
    %不等式约束:g
    7 J3 v# T& _+ Z%等式约束:h
    ) [. C3 l- S0 ~5 e) @%初始点:x0
    9 T4 j8 O5 S& t; ?$ h%罚因子:r0. Z# b2 P, U* H6 F
    %缩小系数:c% I7 e% x5 A4 T5 [  x8 y
    %自变量向量:var
    : q2 Q6 b: t  a%精度:eps
    ! v% f8 d- R8 D6 T! H( Y%目标函数取最小值时的自变量的值:x+ C1 y% t2 L% T
    %目标函数的最小值:minf
    8 Y. n% D" L' `0 c, h1 U  f
    # v) ~/ A! w9 Q$ R+ Q! a+ R; I* ^  _! }; L; i9 y9 v9 R
    目标函数:3 v8 }$ X" h" k0 C0 g9 L1 }& }
    function f=link_objfun1(x)2 ]- a: S# z5 D6 _
    global L1 L5
    8 D; f) m& j& B% l( ^' Y8 |  Sf=0;. L; k5 j+ D* S( W* B  t; b
    snti0=0;+ B- W, H7 S4 H
    for i=0:5
    ( z* j+ M/ F/ w) Asnti=snti0+pi/6*i/5; $ N# D1 @1 @; A/ f
    fai=acos((L1-x(1)*sin(snti+x(5)))/(L1^2+x(1)^2-2*L1*x(1)*sin(snti+x(5)))^1/2);4 U& ]/ {; j/ A$ Z4 _
    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));- c) P0 C2 A7 i2 _
    if snti<=pi/2-x(5)
    ' h- a$ R6 ^9 Y5 u   bati=fai+psai+acos(x(4)/x(3));+ U0 m& U9 T, F3 j
    elseif snti>pi/2-x(5)
    5 \2 m" t2 D# [3 Q6 p% K   bati=-fai+psai+acos(x(4)/x(3));' B$ v1 q, D8 }- a0 b9 f6 U
    end( ]9 ~' T0 @0 {; X+ T" L/ l, u
    f=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;: s' E% u3 ?) C+ _
    end& o. F* q9 c' P7 a$ b4 T9 z* A

    : T* Q) X1 U' C! D; n
    # O3 b4 x# G3 D' ]# k请诸位帮帮忙,我的体力不多。

    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

    我懂的不多,生搬硬套。书上的例题
    - G' r" d1 ]4 v0 {6 E6 V; M运行如下:9 M. d! q3 b7 g4 t7 @6 f5 y& y
    syms t;5 i* W% ]: G& _0 G, ]! P  u) a' y
    a=4;b=3;
    7 r' U+ j2 r; k$ R' r+ Xf=a*t;% u0 A0 Y8 H- H0 ~& H2 f
    g=[t-b];
    " P$ t0 s) b. p) m8 g2 E2 e[x,minf]=minNF(f,[5],g,10,0.5,[t])
    - ]/ ]* P( Z- c我将目标函数写成:/ Z, e2 \4 e6 {& H
    function f=link_objfun(s,t,a,m,n)) n3 q6 W: ?0 ]! ~/ y  ^/ }0 g
    global L1 L5
    " D4 E8 z& v$ q$ t+ nf=0;* p% j/ c9 @0 z' B' e  E
    snti0=0;- P; J: L& R" A6 H& }
    for i=0:5. _7 c; c  K% _! C2 m
    snti=snti0+pi/6*i/5; : [% O9 t! \! ~1 f: n1 M
    fai=acos((L1-s*sin(snti+n))/(L1^2+s^2-2*L1*s*sin(snti+n))^1/2);3 Y7 E# E% N2 r3 J, t
    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));3 u. p0 j  V( l" L* F: l
    if snti<=pi/2-n+ ?# Z% G# Q6 W0 E, z
       bati=fai+psai+acos(m/a);
    7 x% d5 y7 W+ V3 Celseif snti>pi/2-n
      Q) W' J+ _  z3 v' z   bati=-fai+psai+acos(m/a);% W" \/ c0 K# I( R3 n0 V6 s
    end, i0 v. r0 J1 e
    f=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;
    $ j/ s8 |) T+ g* v) rend) U: i# k: a0 u8 |" W) i" h  Y
    运行如下:. y+ o6 M/ P! s; Q- X, @
    clear all;4 c. b1 @! o0 |3 |
    global L1 L5) n. G0 w1 L. S" x- [7 u
    L1=3000;; g. W7 U, {) R$ S0 [' h
    L5=800;7 Q- R: f6 q& H! H
    syms s t a m n;
    0 c: j1 {1 m9 g6 b8 _. [f=link_objfun;9 r/ [" r% {5 w' R5 O
    g=[s;t;a;m;n;L1-s;t-s;a-s;a-s-t+L1;s+t+a-L1;s+t+a-m];
    . F4 G2 o/ l; k1 F$ R1 _( }[x,minf]=minNF(f,[780 2000 800 800 pi/12],g,15,0.6,[s t a m n])! K  j+ G. t5 ]- G" R- P5 ^# A- x
    ??? Input argument "s" is undefined.
    ) a/ i2 a+ m5 U8 p) ]
    5 p6 k1 L8 S( Y: t$ h% v, Z, I/ vError in ==> link_objfun at 7
    # Q" @. T& ]$ _  n' Nfai=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-4-16 08:35 , Processed in 0.415639 second(s), 64 queries .

    回顶部