| 5 | 1/1 | 返回列表 |
| 查看: 1484 | 回復(fù): 5 | |||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | |||
如瑜?運(yùn)?/a>銀蟲 (初入文壇)
|
[求助]
matlab優(yōu)化設(shè)計目標(biāo)函數(shù)復(fù)雜,求幫助 已有2人參與
|
||
|
我優(yōu)化程序的本意是想在兩條曲線取j個點(diǎn),在y相等的情況下,兩條曲線對應(yīng)的x的差的總和值最小,但是好像目標(biāo)函數(shù)太復(fù)雜,計算出的結(jié)果就迭代一次,根本就不是想要的結(jié)果,求高手幫忙呀,看看程序的問題再哪里,我用的是fmincon的優(yōu)化,下面是我的程序 主函數(shù) clc;clear; %format long; A=[-1 0;0 -1];b=[0;0]; %A=[0 -zp/rp;0 zp/rp;1 0;-1 0];b=[-c1;c2;rp*(sin(pi/zp))/d1;-rp*(sin(pi/zp))/d2]; %lb=[1;0.6];ub=[7;3]; [x,fval,exitflag,output]=fmincon(@xiuxingOptimFun,[0.1 0.1],A,b,[],[],[0;0],[1.5;1.5],@xiuxingConFun) %畫圖 rp=72.5; rrp=4; a=1.4; zc=43; zp=44; data=0.14*pi/180; kd1=a*zp/(rp); for pha=0:0.002*pi/zc:pi/zc s1=1+kd1^2-2*kd1.*cos(pha); i=zp/zc; xd5=(rp-rrp.*s1.^(-1/2)).*cos((1-i).*pha-data)-(a/rp).*(rp-zp*(rrp).*s1.^(-1/2)).*cos(i.*pha+data); yd5=(rp-rrp.*s1.^(-1/2)).*sin((1-i).*pha-data)+(a/rp).*(rp-zp*(rrp).*s1.^(-1/2)).*sin(i.*pha+data); xd7=(rp-rrp.*s1.^(-1/2)).*cos((1-i).*pha)-(a/rp).*(rp-zp*(rrp).*s1.^(-1/2)).*cos(i.*pha); yd7=(rp-rrp.*s1.^(-1/2)).*sin((1-i).*pha)+(a/rp).*(rp-zp*(rrp).*s1.^(-1/2)).*sin(i.*pha); %plot(x,y,'-','linewidth',3); %plot(x,y,'-'); %hold on kd2=a*zp/(rp+x(2)); s2=1+kd2^2-2*kd2.*cos(pha); xd6=(rp+x(2)-(rrp+x(1)).*s2.^(-1/2)).*cos((1-i).*pha)-(a/(rp+x(2))).*(rp+x(2)-zp*(rrp+x(1)).*s2.^(-1/2)).*cos(i.*pha); yd6=(rp+x(2)-(rrp+x(1)).*s2.^(-1/2)).*sin((1-i).*pha)+(a/(rp+x(2))).*(rp+x(2)-zp*(rrp+x(1)).*s2.^(-1/2)).*sin(i.*pha); plot(xd5,yd5,'r'); hold on plot(xd6,yd6); hold on plot(xd7,yd7,'g'); hold on end 下面這個是目標(biāo)函數(shù) function y=xiuxingOptimFun(x) rp=72.5; rrp=4; a=1.4; zc=43; zp=44; P=zeros(1,10000); xd1=P; yd1=P; xd2=P; yd2=P; yd3=P; yd4=0; m=1; j=1; data=0.14*pi/180; kd1=a*zp/(rp); for pha=0:0.0002*pi/zc:pi/zc s1=1+kd1^2-2.*kd1.*cos(pha); i=zp/zc; xd1(j)=(rp-rrp.*s1.^(-1/2)).*cos((1-i).*pha-data)-(a/rp).*(rp-zp*(rrp).*s1.^(-1/2)).*cos(i.*pha+data); yd1(j)=(rp-rrp.*s1.^(-1/2)).*sin((1-i).*pha-data)+(a/rp).*(rp-zp*(rrp).*s1.^(-1/2)).*sin(i.*pha+data); %plot(x,y,'-','linewidth',3); %plot(x,y,'-'); %hold on kd2=a*zp./(rp+x(2)); s2=1+kd2^2-2.*kd2.*cos(pha); xd2(j)=(rp+x(2)-(rrp+x(1)).*s2.^(-1/2)).*cos((1-i).*pha)-(a/(rp+x(2))).*(rp+x(2)-zp*(rrp+x(1)).*s2.^(-1/2)).*cos(i.*pha); yd2(j)=(rp+x(2)-(rrp+x(1)).*s2.^(-1/2)).*sin((1-i).*pha)+(a/(rp+x(2))).*(rp+x(2)-zp*(rrp+x(1)).*s2.^(-1/2)).*sin(i.*pha); j=j+1; end for k=1:1:j-1 for o=1:1:j-1 if(yd1(k)-yd2(o)<=0.01) yd3(m)=abs(xd1(k)-xd2(o)); yd4=yd4+yd3(m); m=m+1; end end end %plot(x,y,'-','linewidth',3); %plot(x,y,'-'); %hold on y=yd4; 約束條件 function [c,ceq]=xiuxingConFun(x) c=[]; ceq=x(1)-x(2)-0.02; |
主管區(qū)長 (職業(yè)作家)
![]() |
專家經(jīng)驗: +1059 |

銀蟲 (初入文壇)
鐵桿木蟲 (職業(yè)作家)
銀蟲 (初入文壇)
|
3樓: Originally posted by dingd at 2014-12-08 16:45:23 把你的問題用文字圖片簡明扼要描述清楚,已知參數(shù)、數(shù)據(jù)、目標(biāo)函數(shù)、約束條件、待求參數(shù)等,直接放Matlab代碼不知道有幾個人愿意根據(jù)代碼去還原原問題? 您好,優(yōu)化程序的本意是曲線1(xd1,yd1),與曲線2(xd2,yd2),方程為 xd1(j)=(rp-rrp.*s1.^(-1/2)).*cos((1-i).*pha-data)-(a/rp).*(rp-zp*(rrp).*s1.^(-1/2)).*cos(i.*pha+data); yd1(j)=(rp-rrp.*s1.^(-1/2)).*sin((1-i).*pha-data)+(a/rp).*(rp-zp*(rrp).*s1.^(-1/2)).*sin(i.*pha+data); xd2(j)=(rp+x(2)-(rrp+x(1)).*s2.^(-1/2)).*cos((1-i).*pha)-(a/(rp+x(2))).*(rp+x(2)-zp*(rrp+x(1)).*s2.^(-1/2)).*cos(i.*pha); yd2(j)=(rp+x(2)-(rrp+x(1)).*s2.^(-1/2)).*sin((1-i).*pha)+(a/(rp+x(2))).*(rp+x(2)-zp*(rrp+x(1)).*s2.^(-1/2)).*sin(i.*pha); 這兩段曲線上面分別有j個點(diǎn),使用以下的循環(huán)嵌套,判斷在yd1=yd2相等的情況下,xd1-xd2的差值加起來最小 for k=1:1:j-1 for o=1:1:j-1 if(yd1(k)-yd2(o)<=0.01) yd3(m)=abs(xd1(k)-xd2(o)); yd4=yd4+yd3(m); m=m+1; end end end 最后輸出yd4的值作為目標(biāo)函數(shù),但是好像目標(biāo)函數(shù)太復(fù)雜,計算出的結(jié)果就迭代一次,這個您看懂了嗎,求高手幫忙 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 297求調(diào)劑 +13 | 田洪有 2026-03-26 | 13/650 |
|
|---|---|---|---|---|
|
[論文投稿]
arxiv背書人郵件求助
20+3
|
redcom 2026-03-25 | 7/350 |
|
|
[考研] 材料與化工272求調(diào)劑 +21 | 阿斯蒂芬2004 2026-03-28 | 21/1050 |
|
|
[考研] 348求調(diào)劑 +6 | 小懶蟲不懶了 2026-03-28 | 6/300 |
|
|
[考研] 材料與化工328分調(diào)劑 +9 | 。,。,。,。i 2026-03-23 | 9/450 |
|
|
[考研] 327求調(diào)劑 +4 | 小卡不卡. 2026-03-29 | 4/200 |
|
|
[考研] 086000生物與醫(yī)藥調(diào)劑 +5 | Feisty。 2026-03-28 | 9/450 |
|
|
[考研] 本科雙非材料,跨考一志愿華電085801電氣,283求調(diào)劑,任何專業(yè)都可以 +6 | 芝士雪baoo 2026-03-28 | 8/400 |
|
|
[考研] 0856求調(diào)劑 +13 | zhn03 2026-03-25 | 14/700 |
|
|
[考研] 11408軟件工程求調(diào)劑 +3 | Qiu學(xué)ing 2026-03-28 | 3/150 |
|
|
[考研] 316求調(diào)劑 +7 | 江辭666 2026-03-26 | 7/350 |
|
|
[考研] 311(085601)求調(diào)劑 +4 | liziyeyeye 2026-03-28 | 4/200 |
|
|
[考研]
|
y7czhao 2026-03-26 | 10/500 |
|
|
[考研] 085701環(huán)境工程,267求調(diào)劑 +16 | minht 2026-03-26 | 16/800 |
|
|
[材料工程] 一志愿C9材料與化工專業(yè)總分300求調(diào)劑 +8 | 曼111 2026-03-24 | 9/450 |
|
|
[考研] 張芳銘-中國農(nóng)業(yè)大學(xué)-環(huán)境工程專碩-298 +4 | 手機(jī)用戶 2026-03-26 | 4/200 |
|
|
[考研] 314求調(diào)劑 +3 | 溪云珂 2026-03-26 | 3/150 |
|
|
[考研] 求調(diào)劑 一志愿 本科 北科大 化學(xué) 343 +6 | 13831862839 2026-03-24 | 7/350 |
|
|
[考研]
|
13659058978 2026-03-24 | 4/200 |
|
|
[考研] 284求調(diào)劑 +3 | yanzhixue111 2026-03-23 | 6/300 |
|