QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5361|回复: 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循环写的。不会导入。
    & ~/ m) X5 v( D- q惩罚函数调用格式如下:; S, m3 I, A' G% B5 I* [! Z
    function [x,minf] = minMixFun(f,g,h,x0,r0,c,var,eps)
    ( E+ m- X9 b( L  L1 y2 r%目标函数:f" N' a; U4 O1 n0 j% f  R/ [
    %不等式约束:g; y' Y2 _9 o; g# }, m
    %等式约束:h
    . {  M+ q/ o+ |* v5 @, P; a%初始点:x05 s4 p) ]: v$ Q1 p* ~' ]8 ?
    %罚因子:r0# K  f1 x9 F3 V6 {- P( |8 c) H9 w8 o
    %缩小系数:c
    ! T# ?5 o5 t( Z; i) S* V, z, }%自变量向量:var/ G1 ~: q# T! `/ A7 `$ R8 [0 r' S7 N
    %精度:eps
    ( X/ @& @) O$ x: `%目标函数取最小值时的自变量的值:x- N' W9 O4 s, G2 Z9 |4 _" a
    %目标函数的最小值:minf; e$ Y' y/ S3 v0 Q/ b, q  H' \

    ) z8 W" \7 [/ o) a8 O" }% W! m9 }" P/ H* @1 Z: z# I0 r/ r  s
    目标函数:7 m. S3 U! E$ ?2 E0 ]
    function f=link_objfun1(x)
    % m8 z8 h2 M2 b1 t8 B% wglobal L1 L5! {( y! W% x- ?" E: q) E
    f=0;
    ' r9 X, D* U' J' g6 L5 ?snti0=0;5 o# X1 U; m2 W! T
    for i=0:5- I, q) L0 [' ?
    snti=snti0+pi/6*i/5;
    : i* p& @* X" N/ G( g4 B& ifai=acos((L1-x(1)*sin(snti+x(5)))/(L1^2+x(1)^2-2*L1*x(1)*sin(snti+x(5)))^1/2);
    ) l  `: q" ~4 X' Lpsai=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));
    ( g) O0 |: t8 O" [; O' aif snti<=pi/2-x(5)# d! f. E7 |7 U# ?  T3 ?
       bati=fai+psai+acos(x(4)/x(3));
    2 P- _  |! T. M. melseif snti>pi/2-x(5)
    : D6 A9 X# u2 F% |* d   bati=-fai+psai+acos(x(4)/x(3));
    4 L& r8 O! w/ Q: U4 m# cend
    ) m" o$ B) t' ~: Q; P5 df=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;
    * r9 |1 \% g8 t- J; \end8 w: M6 `6 p8 Z. @, b' @

    5 G" W9 r- z4 V& p6 Q
    1 F. S1 F4 x8 p+ c+ Q请诸位帮帮忙,我的体力不多。

    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

    我懂的不多,生搬硬套。书上的例题
    % _6 _! I% t0 d; b% v$ j  j运行如下:6 b; `9 X; B; R
    syms t;
    9 h' q( j2 g7 O8 r+ S  ^a=4;b=3;
    8 E9 G4 Z$ L! `+ z( ^+ Ef=a*t;$ i$ m2 m' {# |4 [- j
    g=[t-b];3 S) D& ~/ R1 B" @) F% p# k
    [x,minf]=minNF(f,[5],g,10,0.5,[t])
    / O$ y, T6 L' n, e我将目标函数写成:
    - Y$ R+ v; h, H: Xfunction f=link_objfun(s,t,a,m,n)
    : V6 J) c+ S- S# U0 o# vglobal L1 L5
    / R  l- G1 I1 ^$ [0 _f=0;
    5 h! T0 K3 G/ ~* ?snti0=0;3 c* W) o1 P3 `; M
    for i=0:5
      d- p: b) ?5 `  g  }snti=snti0+pi/6*i/5; # ^* C- T# U% a. A
    fai=acos((L1-s*sin(snti+n))/(L1^2+s^2-2*L1*s*sin(snti+n))^1/2);
    ) T  S* V9 o! L7 U. r! [( Fpsai=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 r- B0 W9 N) G+ ?) I3 Mif snti<=pi/2-n4 q$ B6 S* ^" u. H
       bati=fai+psai+acos(m/a);& b# [6 h& x' o- D  N" P* W
    elseif snti>pi/2-n
    / g. K+ L( Y9 Y$ |   bati=-fai+psai+acos(m/a);6 f7 }5 r* B' S5 G$ m" ~# K
    end0 P6 o0 @) f6 a3 L* e& R
    f=f+(L1*cos(snti)+L5*cos(snti-bati)-L1)^2;) o' e* d7 ~- m% ^
    end
    / ]3 X% E# `4 w7 b- B1 Y运行如下:
    & y- p  Q: G0 A, w: ^7 Pclear all;' u2 z$ O6 R+ T4 T/ X7 d6 @
    global L1 L5
    ( ~; N2 [! e7 i# AL1=3000;
    % U! `( H+ b  F  k4 [: N# Z$ P/ R1 vL5=800;4 Z# B0 s( v3 h9 i
    syms s t a m n;
    3 ]0 j. B% i9 of=link_objfun;# P$ e& F! T8 \) L1 y
    g=[s;t;a;m;n;L1-s;t-s;a-s;a-s-t+L1;s+t+a-L1;s+t+a-m];
    * T& A6 T5 s" J% n[x,minf]=minNF(f,[780 2000 800 800 pi/12],g,15,0.6,[s t a m n])
    % h6 Z. \+ F% T3 {/ P; j3 h??? Input argument "s" is undefined.
    $ j8 i7 b8 y$ L" C: M
    6 Q; H5 o$ J. @0 z7 w' zError in ==> link_objfun at 7  t! j; C) [4 Y6 T0 f7 i
    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-8-7 18:29 , Processed in 0.349000 second(s), 64 queries .

    回顶部