| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 
	 | 
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-01-29 
				
				年龄: 66 
				
					帖子: 7
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			-------------------------------------------------------------------------------- 
		
		
		
		
		
		
		
	本人是一个新手,对MATALAB还一知半解。最近处理一个优化问题,运用“优化工作箱中的fmincon函数”,始终不能得到满意结果,初看起来,好像是其中一个非线性约束条件不起作用,但自己无法找到问题出在哪里,也没有办法和能力解决,现在把有关运行内容放在下面,请各位高手给予诊断,指教。本人十分感谢。 有问题的程序如下: function f = myfun(x) f=7.85*10^(-6)*pi*x(1)*x(2)*(1420+x(1))*(8350*x(3)^(-1)-1) function[c,ceq]= mycon(x) c(1)=210.2*x(3)+26.8*x(1)*x(2)-0.08*x(1)^3*x(2)-3994-((7.5+x(1))^2*(0.25*x(1)^3*x(2)^3+1.5*10^8)*(x(1)*x(2)+852)^(-2)); ceq=[ ] 确定变量初始值,在MATLAB命令窗口调用程序 x0=[60;10;2800]; A=[0,0,1; 0,0,-1;-1,0,0;1,0,0;0,-1,0;0,1,0]; b=[2800,0, -70,100,-15,22] lb=zeros(2,1); options=optimset('display','iter','largescale','off'); [x,fval,exitflang,output]=fmincon(@myfun,x0,A ,b,[ ],[ ],lb,[ ],@mycon ,options) 如此运行,始终不能得到满意结果。特别可以看出约束c(1)没有起作用。  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-05-15 
				
				年龄: 43 
				
					帖子: 8
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			C(1)改成 C 就可以了. 
		
		
		
		
		
		
		
	C(1)是个数组  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |