QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5316|回复: 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循环写的。不会导入。- v/ d5 L1 v+ D
    惩罚函数调用格式如下:
    0 h4 k& e2 m7 C6 F. H3 Cfunction [x,minf] = minMixFun(f,g,h,x0,r0,c,var,eps)  n. H! U- @$ y$ m' e. o: y% e0 {; N
    %目标函数:f
    % A- B+ _& \/ w7 N%不等式约束:g
    2 ^3 y4 N$ N! e/ @%等式约束:h
    & w( j- P" Q5 d% N- D% ~( F%初始点:x0
    2 U3 u. y* n: O( w8 @%罚因子:r0
    7 X- R8 C# P9 H% Q& S# V* R6 @%缩小系数:c
    1 g8 ^2 X; W) S# ?%自变量向量:var5 ^9 `; n/ e1 m
    %精度:eps
    $ m% k4 `+ S8 j! G%目标函数取最小值时的自变量的值:x
    ( [0 V5 `9 P4 t3 n9 ^1 z" w1 W%目标函数的最小值:minf
    " [2 Q6 a+ d* L' N& ]; _& C, v  p. G! p3 t+ v
    4 {  M4 W& e5 Y4 S$ R8 z; y
    目标函数:1 H* [9 ^( e( P( {
    function f=link_objfun1(x)" W$ s0 l/ a  w: D3 G7 c
    global L1 L5" H1 y! y# I2 w
    f=0;3 a/ J. A1 P6 W
    snti0=0;
    - o( |0 j9 w" c: A+ |+ I' dfor i=0:5" D7 V% S% Y4 k. I
    snti=snti0+pi/6*i/5; 3 K! M6 b: a$ t, `; S
    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 w+ n& q, Z% G8 R5 I' ~/ apsai=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));0 \$ N* N) Z$ ^$ q
    if snti<=pi/2-x(5)5 R7 W" h0 S) w+ f! A) m! k
       bati=fai+psai+acos(x(4)/x(3));* d6 y& i% Z6 i8 O8 N
    elseif snti>pi/2-x(5)6 K3 C( G) n3 S- F! B* H0 e, c2 S8 V
       bati=-fai+psai+acos(x(4)/x(3));! J5 C6 l$ U. l6 g5 s+ V& z
    end# ?6 h0 Z/ C+ B  _% S$ m
    f=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;
    ' `5 H6 Q' Z( G; Qend
    / I3 E- _" P& E7 N8 [6 A* {6 r4 x5 g$ S! q  v/ y

    7 J1 X0 r5 v! M请诸位帮帮忙,我的体力不多。

    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

    我懂的不多,生搬硬套。书上的例题3 M; e$ p5 A: [7 E! G. D9 ?0 I
    运行如下:6 ~- G$ |# N# h7 ]$ Z$ W1 |
    syms t;+ ~$ ]& z: s+ S5 ^* S2 \/ A/ Q' p* P% N
    a=4;b=3;! i: P+ J  Q' y. U; M
    f=a*t;
    8 n8 H7 [" T6 v9 o4 z( |' n0 o. xg=[t-b];
    5 W) `& p# q" ]9 D) T! \6 A7 B& I& t, o[x,minf]=minNF(f,[5],g,10,0.5,[t])
      `1 B, K/ U3 E& \- K7 @- ]我将目标函数写成:
    6 P( I5 Y6 L: V! pfunction f=link_objfun(s,t,a,m,n)* L, E2 T5 X7 y& A; {+ p
    global L1 L5
    2 S. V1 s) Y1 tf=0;
    : i" A' R8 L( z1 T& ssnti0=0;
    - |9 W5 P, p# [6 j# ?2 w" L- vfor i=0:52 ~9 h, |# o* t8 D$ ]
    snti=snti0+pi/6*i/5;
    : y$ D4 }* B% Rfai=acos((L1-s*sin(snti+n))/(L1^2+s^2-2*L1*s*sin(snti+n))^1/2);
    & \& P7 l$ e% z6 `1 ^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));/ ~6 [! a( O# ]' Z' }
    if snti<=pi/2-n' l5 q$ s5 r. k# b( V/ N% l
       bati=fai+psai+acos(m/a);. R/ V. X9 I8 x# S
    elseif snti>pi/2-n
    * E  {  Q/ ~( q/ b2 |: x% b, j   bati=-fai+psai+acos(m/a);1 [# c' `. o0 j1 g7 t
    end- |2 N$ `4 q' _; q1 @, k( X! C+ O
    f=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;
    7 ~# q& q' ?% B/ |4 C5 aend6 ~! [# r' f2 h% k3 m
    运行如下:
    5 g5 \! e* \  X" s9 `clear all;% P1 j9 M# ]' m' l! p
    global L1 L5  K/ G9 `7 h4 ?# l1 @9 Z* q# j
    L1=3000;
    & c4 N0 A) V  a" E& q) `! V+ SL5=800;
    ( F/ P7 e5 X* zsyms s t a m n;; c' p. g( u9 J: d) X) s. r- u# b
    f=link_objfun;1 A# z5 r9 Y; B4 b
    g=[s;t;a;m;n;L1-s;t-s;a-s;a-s-t+L1;s+t+a-L1;s+t+a-m];0 \$ [. ^% D! Y  X+ u9 `0 f. v+ u
    [x,minf]=minNF(f,[780 2000 800 800 pi/12],g,15,0.6,[s t a m n])' F9 m$ W% M$ j
    ??? Input argument "s" is undefined.! }- ?; f( ~3 k( u& T& ?8 m
    - w$ _8 ]8 f! y  O" r
    Error in ==> link_objfun at 7
    6 ?4 _& C0 y7 T! Sfai=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-6-12 03:46 , Processed in 1.461255 second(s), 63 queries .

    回顶部