| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-03-28 
				
				年龄: 24 
				
					帖子: 6
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			大家好,请教大家一个问题,我在用fmincon函数进行优化,但我的约束条件是非线性的,那我应该怎么写程序啊? 
		
		
		
			附件是具体的题目,希望大家给些指点。 告诉我方法或类似的例子都行 谢谢各位了  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-02-20 
				
				年龄: 37 
				
					帖子: 4
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			定义非线性约束函数 function [c,ceq]=confun(x) 
		
		
		
		
		
		
		
	c=[c1(x)-26800;c2(x)-0.3;c3(x)-60]; ceq=[]; 此函数保存在confun.m文件中 最后在主程序中调用confun(x) [x,fval]=fmincon('objfun',x0,[],[],[],[],[],[],'confun',options); objfun为目标函数,x0为给定的初始值  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-03-28 
				
				年龄: 24 
				
					帖子: 6
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			真是太感谢了!我用这个方法调试出了结果,但是得出的结果与初始值特别相关,初始值一变,结果变化特别大,能告诉我初始值应该怎么定吗,我好像还不是特别了解初始值的意思
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#4 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-02-20 
				
				年龄: 37 
				
					帖子: 4
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			初始值的取法我也没解决好,不同的取值可能得到一个局部最优解而不是全局最优解,一般尽量取在最优解附近,要不就多试几次
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-03-28 
				
				年龄: 24 
				
					帖子: 6
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			对啊,我刚开始取得时候结果只是和初值特别接近,到后来有时结果都和初值一样了,哎。。。。头疼。。。
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |