You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							69 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							69 lines
						
					
					
						
							2.6 KiB
						
					
					
				
								%-------------------------------------------------------------
							 | 
						|
								%
							 | 
						|
								%    Copyright (C) 2009 Krister Svanberg
							 | 
						|
								%
							 | 
						|
								%    This file, mmatoymain.m, is part of GCMMA-MMA-code.
							 | 
						|
								%    
							 | 
						|
								%    GCMMA-MMA-code is free software; you can redistribute it and/or
							 | 
						|
								%    modify it under the terms of the GNU General Public License as 
							 | 
						|
								%    published by the Free Software Foundation; either version 3 of 
							 | 
						|
								%    the License, or (at your option) any later version.
							 | 
						|
								%    
							 | 
						|
								%    This code is distributed in the hope that it will be useful,
							 | 
						|
								%    but WITHOUT ANY WARRANTY; without even the implied warranty of
							 | 
						|
								%    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
							 | 
						|
								%    GNU General Public License for more details.
							 | 
						|
								%    
							 | 
						|
								%    You should have received a copy of the GNU General Public License
							 | 
						|
								%    (file COPYING) along with this file.  If not, see 
							 | 
						|
								%    <http://www.gnu.org/licenses/>.
							 | 
						|
								%    
							 | 
						|
								%    You should have received a file README along with this file,
							 | 
						|
								%    containing contact information.  If not, see
							 | 
						|
								%    <http://www.smoptit.se/> or e-mail mmainfo@smoptit.se or krille@math.kth.se.
							 | 
						|
								%
							 | 
						|
								%------
							 | 
						|
								%
							 | 
						|
								%  Version September 2009.
							 | 
						|
								%
							 | 
						|
								%  This file contains a main program for using MMA to solve
							 | 
						|
								%  a problem defined by the users files mmatoyinit.m
							 | 
						|
								%  (which must be run before mmatoymain.m) and toy2.m.
							 | 
						|
								%
							 | 
						|
								%%%% If outeriter=0, the user should now calculate function values
							 | 
						|
								%%%% and gradients of the objective- and constraint functions at xval.
							 | 
						|
								%%%% The results should be put in f0val, df0dx, fval and dfdx:
							 | 
						|
								%
							 | 
						|
								if outeriter < 0.5
							 | 
						|
								  [f0val,df0dx,fval,dfdx] = toy2(xval);
							 | 
						|
								  outvector1 = [outeriter xval']
							 | 
						|
								  outvector2 = [f0val fval']
							 | 
						|
								end
							 | 
						|
								%
							 | 
						|
								%%%% The iterations start:
							 | 
						|
								kktnorm = kkttol+10;
							 | 
						|
								outit = 0;
							 | 
						|
								while kktnorm > kkttol & outit < maxoutit
							 | 
						|
								  outit   = outit+1;
							 | 
						|
								  outeriter = outeriter+1;
							 | 
						|
								%%%% The MMA subproblem is solved at the point xval:
							 | 
						|
								  [xmma,ymma,zmma,lam,xsi,eta,mu,zet,s,low,upp] = ...
							 | 
						|
								  mmasub(m,n,outeriter,xval,xmin,xmax,xold1,xold2, ...
							 | 
						|
								  f0val,df0dx,fval,dfdx,low,upp,a0,a,c,d);
							 | 
						|
								%%%% Some vectors are updated:
							 | 
						|
								  xold2 = xold1;
							 | 
						|
								  xold1 = xval;
							 | 
						|
								  xval  = xmma;
							 | 
						|
								%%%% The user should now calculate function values and gradients
							 | 
						|
								%%%% of the objective- and constraint functions at xval.
							 | 
						|
								%%%% The results should be put in f0val, df0dx, fval and dfdx.
							 | 
						|
								  [f0val,df0dx,fval,dfdx] = toy2(xval);
							 | 
						|
								%%%% The residual vector of the KKT conditions is calculated:
							 | 
						|
								  [residu,kktnorm,residumax] = ...
							 | 
						|
								  kktcheck(m,n,xmma,ymma,zmma,lam,xsi,eta,mu,zet,s, ...
							 | 
						|
								           xmin,xmax,df0dx,fval,dfdx,a0,a,c,d);
							 | 
						|
								  outvector1 = [outeriter xval']
							 | 
						|
								  outvector2 = [f0val fval']
							 | 
						|
								%
							 | 
						|
								end
							 | 
						|
								%---------------------------------------------------------------------
							 | 
						|
								
							 |