QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5340|回复: 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循环写的。不会导入。
    8 B+ j8 ~$ G- a# [7 U惩罚函数调用格式如下:6 @2 I1 J! x# Q; c
    function [x,minf] = minMixFun(f,g,h,x0,r0,c,var,eps)
    % Z! \9 Z( `- l, ]/ Z; A%目标函数:f
    , q% W% K2 P$ i%不等式约束:g
    ' ?5 e4 y% N$ ]4 D%等式约束:h
    0 [3 _! R9 H3 U; }- F8 ?; x%初始点:x0' D" [. u7 G' h" o
    %罚因子:r0, F; v, u% m2 k# E& B, k
    %缩小系数:c; o5 `. [3 z9 ?+ T4 n: P  C7 [% K; m
    %自变量向量:var
      |" M, @" ~% S5 |' g%精度:eps
    / E' m( ~) r3 y# ]%目标函数取最小值时的自变量的值:x0 t# K" L1 p8 I7 O7 x
    %目标函数的最小值:minf
    ! B5 ?6 ~$ y0 f% z, m6 X; P/ j. j: K# e+ u7 E! ^& g; @
    : J4 d1 q9 g. g' K  j9 m+ ~
    目标函数:
    - ~# T; b# }/ pfunction f=link_objfun1(x)
    " L5 v3 x" u( }/ l; [# ]global L1 L5! d& K7 a1 H0 o8 r7 M
    f=0;0 z* v: N* h/ N7 w/ i/ x
    snti0=0;" w" W( `0 ]0 Z! l- l" S2 E
    for i=0:5
    " _' m" a7 [! B. V* psnti=snti0+pi/6*i/5; . H. s/ P" o. s( v7 I/ y$ 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);. _/ }3 C  `0 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));
    . v6 J6 z: Z6 s8 G+ \2 p6 mif snti<=pi/2-x(5)0 \: _5 y3 \7 r4 n  e
       bati=fai+psai+acos(x(4)/x(3));
    ! A7 P. z- K: X9 Felseif snti>pi/2-x(5)
    / E8 R2 l+ g2 E6 B$ U" D1 O   bati=-fai+psai+acos(x(4)/x(3));& ~$ N' b% H, a$ U- G5 f
    end
    ! n' c: C6 }* L4 D) \f=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;
    & a& T1 J  E6 Q+ c% _6 u' Bend. D7 }% Y- d" s# }3 M
    5 t" N7 ]1 Q- f

    / ]. q/ y9 }' i8 c. v8 J; r请诸位帮帮忙,我的体力不多。

    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

    我懂的不多,生搬硬套。书上的例题& y0 ]( H% z' s) R' k
    运行如下:
    * N" P# o( B: b' z8 C2 Zsyms t;# R. B( e; ^# o; F/ J) m  T
    a=4;b=3;
    ( q: A/ b, b) j+ B) [- C+ W+ Ff=a*t;( w' h  O4 E7 }; t$ ~
    g=[t-b];
    * X, L- `; [6 u' @  ~2 Q[x,minf]=minNF(f,[5],g,10,0.5,[t])
    ) i  B7 @# w) t1 {7 `我将目标函数写成:( {% X3 h3 K4 ?8 w# j
    function f=link_objfun(s,t,a,m,n)/ y! l* J4 y, C" ?
    global L1 L5$ m% K' W1 t5 S% A2 C4 `
    f=0;
    9 J, z& D: n& n8 Usnti0=0;
    2 \* c6 _5 ]: R+ u1 F' [5 e( N4 |! @for i=0:5
    " @  D+ X6 S' R5 ?' Qsnti=snti0+pi/6*i/5;
    4 L' R$ E* e: W8 E6 n- P/ N: W- gfai=acos((L1-s*sin(snti+n))/(L1^2+s^2-2*L1*s*sin(snti+n))^1/2);2 L$ i7 n0 K; _% j+ P
    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));
    & N4 R4 M% R  D: eif snti<=pi/2-n
    ! r0 ], j* j( r7 e   bati=fai+psai+acos(m/a);( }: W) S% y6 q0 l/ v
    elseif snti>pi/2-n
    6 m, r+ J  g8 k' {7 l   bati=-fai+psai+acos(m/a);) A% s1 t  j% k& B
    end
    , s9 p2 C+ r0 }6 g% R7 Vf=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;
    5 b" B1 Q- B# D' e7 R6 }end
    3 _  I, c* X+ c4 o6 `+ u- M运行如下:
    " D% @3 _" e0 _clear all;
    & Y. O1 b5 f5 I, U/ Lglobal L1 L5
    & S# e0 }* C' p& s: PL1=3000;
    ' ?. _+ ?" C. ~, T* e; QL5=800;
    5 x# ]9 Q3 Z& Z6 W. R$ Jsyms s t a m n;
    7 N! ?( R. f1 b+ a" S6 m5 A6 }f=link_objfun;
    * X8 v2 z$ Z/ I) q+ O  R- v3 U( I; C9 ?g=[s;t;a;m;n;L1-s;t-s;a-s;a-s-t+L1;s+t+a-L1;s+t+a-m];/ ^1 P/ F" V' I3 J" y5 |+ m
    [x,minf]=minNF(f,[780 2000 800 800 pi/12],g,15,0.6,[s t a m n])9 @5 b& K: ~5 Q7 ]
    ??? Input argument "s" is undefined.3 Q3 F* r- B9 d# T; e& }, L

    # G3 H# W0 V: I% k- {8 @. }2 dError in ==> link_objfun at 7/ M: e5 _4 f+ H, q
    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-10 03:43 , Processed in 1.169550 second(s), 64 queries .

    回顶部