Changeset 411

Show
Ignore:
Timestamp:
01/31/10 18:55:54 (2 years ago)
Author:
dmitrey
Message:

minor changes

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • PythonPackages/OpenOpt/openopt/kernel/LP.py

    r410 r411  
    8383        return r 
    8484 
    85     def exportToMPS(self, filename): 
     85    def exportToMPS(self, filename, format='fixed', startIndex=0): 
    8686        try: from lp_solve import lpsolve 
    8787        except ImportError: self.err('To export LP/MILP in files you should have lpsolve and its Python binding properly installed') 
    88         handler = self.get_lpsolve_handler() 
     88         
     89        maxNameLength = 8 if format != 'free' else 255 
     90        handler = self.get_lpsolve_handler(maxNameLength, startIndex) 
    8991         
    9092        # TODO: uncomment it 
     
    9294        if ext != '': filename += '.' + ext 
    9395         
    94         r = lpsolve('write_mps', handler, filename)  
     96        if format=='fixed': 
     97            r = lpsolve('write_mps', handler, filename)  
     98        elif format=='free': 
     99            r = lpsolve('write_freemps', handler, filename)  
     100        else: 
     101            self.err('incorrect MPS format, should be "fixed" or "free"') 
    95102        if r != True:  
    96103            self.warn('Failed to write MPS file, maybe read-only filesystem, incorrect path or write access is absent') 
     
    99106        return r 
    100107 
    101     def get_lpsolve_handler(self): 
     108    def get_lpsolve_handler(self, maxNameLength=255, startIndex=0): 
    102109        try: from lp_maker import lp_maker, lpsolve 
    103110        except ImportError: self.err('To export LP/MILP in files you should have lpsolve and its Python binding properly installed') 
     
    143150                    names.append(Name) 
    144151                else: 
    145                     tmp = [(oov.name + ('_%d' % j)) for j in xrange(Size)] 
     152                    tmp = [(oov.name + ('_%d' % (startIndex+j))) for j in xrange(Size)] 
    146153                    names += tmp 
    147154                    Name = tmp[-1] 
    148                 if len(Name) > 8
     155                if maxNameLength < len(Name)
    149156                    L('delete_lp') 
    150                     self.err('incorrect name "%s" - for exporting FuncDesigner models into MPS files you cannot have variables with names of length > 8'% Name
     157                    self.err('incorrect name "%s" - for exporting FuncDesigner models into MPS files you cannot have variables with names of length > maxNameLength=%d'% maxNameLength
    151158                     
    152159            # TODO: check are names unique