QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4957|回复: 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循环写的。不会导入。
    5 e0 n* `6 L7 P* @2 C1 f! m% e惩罚函数调用格式如下:
    , q/ `! k; @+ p, t* @, X3 {function [x,minf] = minMixFun(f,g,h,x0,r0,c,var,eps)
    2 q( f9 g: ^0 n1 j* H1 {" @%目标函数:f8 u/ i" Y% E: p# k6 p
    %不等式约束:g6 i, v, t! @! o* ^) s
    %等式约束:h
    ( @0 B% A/ R8 r3 {3 a% H%初始点:x0: D+ W" c& E  o
    %罚因子:r0
    " f2 G; x: j# I) Q' r4 g8 q; v4 @%缩小系数:c
    " F3 R7 A5 @( @! e/ e! B* d! b1 W2 M%自变量向量:var# _- G) D4 B. G& C9 W# g
    %精度:eps& w, p- F- M* g7 e1 k
    %目标函数取最小值时的自变量的值:x
    : t* ?, {4 o8 r) J: e%目标函数的最小值:minf# i% n5 r- b7 f9 u3 }
    6 Y1 X7 \1 Z! D$ n

    8 }( F5 U1 @2 X& r! n目标函数:5 G( k& s: f' A/ w8 M$ ~0 R5 e/ i
    function f=link_objfun1(x). i7 X! |4 A0 @5 w- z2 h6 W
    global L1 L5
    7 ]; @& j+ _; Gf=0;% G/ a9 ]8 D; ]* d# Z' N. Q* z
    snti0=0;
    , D1 N6 f2 V! i: d/ ]9 n. Sfor i=0:5: g4 U3 h4 A, r$ q/ H' Y
    snti=snti0+pi/6*i/5;   @$ w7 L' ^: F* q
    fai=acos((L1-x(1)*sin(snti+x(5)))/(L1^2+x(1)^2-2*L1*x(1)*sin(snti+x(5)))^1/2);/ V0 n+ w' p* l; M! S( |
    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));
    6 O4 T* h* S0 `- I' J" t& Oif snti<=pi/2-x(5)
    * f# e, K6 [) @0 }   bati=fai+psai+acos(x(4)/x(3));6 h; [9 @! }. q1 P' k2 l, I9 h' z
    elseif snti>pi/2-x(5)
    9 u' }0 ^$ E& }0 O! i4 r   bati=-fai+psai+acos(x(4)/x(3));" p8 f0 Y: _; c
    end
    & Y, G. A. S# i/ Ff=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;! U. ?/ y. k$ m
    end
    ! T, J5 ^" N+ D! k
    ! y! P; i* ^3 y8 C/ o
    / _& t* [0 L7 b# E请诸位帮帮忙,我的体力不多。

    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 @: i7 x0 G8 d3 j5 V! v, d, `  Y# V运行如下:+ A% G, H+ [  j# C
    syms t;
    / R( W# Q5 y  P- N- pa=4;b=3;
    % O1 Q  D( D9 Y, Hf=a*t;
    # Q+ m; w7 |/ j8 Gg=[t-b];
    " f. G. g, U+ e* [: Y[x,minf]=minNF(f,[5],g,10,0.5,[t])% d& t4 P7 w9 q1 D6 p
    我将目标函数写成:' [9 [( O( W9 E
    function f=link_objfun(s,t,a,m,n)- [% F9 Z0 S; i/ \
    global L1 L5
    - ~# c5 B6 t) n$ K/ s8 d+ a0 bf=0;  d; M* [# A/ O" p( S0 z
    snti0=0;
    3 F, x( s$ F$ h8 _for i=0:5
    4 t5 t, m# U- T- K! Esnti=snti0+pi/6*i/5;
    9 U# t+ z1 h! ~% zfai=acos((L1-s*sin(snti+n))/(L1^2+s^2-2*L1*s*sin(snti+n))^1/2);( K  K8 J. o9 h1 o! ]
    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));0 l& J/ Q- I$ e1 z" \7 ~9 J
    if snti<=pi/2-n* w. E. Z* |: w: Q. F
       bati=fai+psai+acos(m/a);3 e& C* y* U4 B6 ?) y1 C4 _; q4 n
    elseif snti>pi/2-n
    , j$ e* a: q0 D2 [* l   bati=-fai+psai+acos(m/a);
    9 X( ?: `) A8 _7 a1 Q. {% |8 l) Tend$ _% \+ R; K6 U7 ^. _# W' b
    f=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;- x* A4 \) L/ O" \6 v3 V
    end0 O; `" f/ w% b: G
    运行如下:
    1 D% X# C6 I/ T  P& v7 {9 lclear all;: W% A! W( D  x: {5 h+ u5 G
    global L1 L5, J8 a4 t1 Q9 O' s8 q& S  ~+ @* F
    L1=3000;! j# H; |! X/ f( K1 V9 R+ J! I
    L5=800;
    ( z! ~! G2 W  e$ c. ?# @7 \8 psyms s t a m n;
    / O1 Z+ U$ h0 Of=link_objfun;
    . t; c# ?7 L: [5 eg=[s;t;a;m;n;L1-s;t-s;a-s;a-s-t+L1;s+t+a-L1;s+t+a-m];
    % V$ Y$ ]6 T- l8 B+ L[x,minf]=minNF(f,[780 2000 800 800 pi/12],g,15,0.6,[s t a m n])4 ~5 }( t; K+ |  H1 m
    ??? Input argument "s" is undefined.
    6 n1 Y; }1 C; N9 Z4 M7 |. l- R2 `3 `4 {: F+ z
    Error in ==> link_objfun at 74 f' b4 y5 ]% s2 c
    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, 2025-8-9 12:13 , Processed in 0.489473 second(s), 63 queries .

    回顶部