intlinprog
Programación lineal de enteros mixtos (MILP)
Sintaxis
Descripción
Solver de programación lineal de enteros mixta.
Encuentra el mínimo de un problema especificado por
f, x, intcon, b, beq, lb y ub son vectores, y A y Aeq son matrices.
Puede especificar f, intcon, lb y ub como vectores o arreglos. Consulte Argumentos de matriz.
Nota
intlinprog
se aplica únicamente al enfoque basado en solvers. Para ver una exposición sobre los dos enfoques de optimización, consulte En primer lugar, elija el enfoque basado en problemas o el enfoque basado en solvers.
utiliza una estructura x
= intlinprog(problem
)problem
para encapsular todas las entradas de solver. Puede importar una estructura problem
de un archivo MPS utilizando mpsread
. También puede crear una estructura problem
a partir de un objeto OptimizationProblem
utilizando prob2struct
.
Ejemplos
Argumentos de entrada
Argumentos de salida
Limitaciones
Con frecuencia, algunos componentes que supuestamente son valores enteros de la solución
x(intCon)
no son exactamente enteros.intlinprog
considera como enteros todos los valores de solución dentro de laIntegerTolerance
de un entero.Para redondear todos los supuestos enteros para que sean enteros exactos, utilice la función
round
.x(intcon) = round(x(intcon));
Precaución
Las soluciones de redondeo pueden provocar que la solución se convierta en no factible. Compruebe la factibilidad después del redondeo:
max(A*x - b) % See if entries are not too positive, so have small infeasibility max(abs(Aeq*x - beq)) % See if entries are near enough to zero max(x - ub) % Positive entries are violated bounds max(lb - x) % Positive entries are violated bounds
intlinprog
no exige que los componentes de la solución tengan valores enteros cuando sus valores absolutos sobrepasan2.1e9
. Cuando la solución tiene esos componentes,intlinprog
le advierte. Si recibe esta advertencia, compruebe la solución para ver si los componentes que supuestamente tienen valores enteros de la solución están cerca de los enteros.intlinprog
no permite que los componentes del problema, como los coeficientes def
,A
oub
, sobrepasen1e25
en valor absoluto. Si intenta ejecutarintlinprog
con un problema de ese tipo,intlinprog
genera un error.
Sugerencias
Para especificar valores binarios, establezca que las variables sean enteros en
intcon
y proporcióneles límites inferiores de0
y límites superiores de1
.Ahorre memoria especificando las matrices de restricciones lineales dispersas
A
yAeq
. Sin embargo, no puede utilizar matrices dispersas parab
ybeq
.Si incluye un argumento
x0
,intlinprog
utiliza este valor en la heurística'rins'
y en la heurística de inmersión guiada hasta que encuentra un punto factible entero mejor. Así, cuando proporcionax0
, puede obtener buenos resultados estableciendo la opción'Heuristics'
en'rins-diving'
u otro ajuste que utiliza'rins'
.Para proporcionar índices lógicos para componentes enteros, es decir, un vector binario en el que
1
indica un entero, convierta al formatointcon
utilizandofind
. Por ejemplo:logicalindices = [1,0,0,1,1,0,0]; intcon = find(logicalindices)
intcon = 1 4 5
intlinprog
reemplaza abintprog
. Para actualizar códigobintprog
antiguo para utilizarintlinprog
, realice los siguientes cambios:Establezca
intcon
en1:numVars
, dondenumVars
es el número de variables del problema.Establezca
lb
enzeros(numVars,1)
.Establezca
ub
enones(numVars,1)
.Actualice todas las opciones relevantes. Utilice
optimoptions
para crear opciones paraintlinprog
.Cambie la llamada a
bintprog
como sigue:[x,fval,exitflag,output] = bintprog(f,A,b,Aeq,Beq,x0,options) % Change your call to: [x,fval,exitflag,output] = intlinprog(f,intcon,A,b,Aeq,Beq,lb,ub,x0,options)
Funcionalidad alternativa
App
La tarea Optimize de Live Editor proporciona una interfaz visual para intlinprog
.
Historial de versiones
Introducido en R2014aConsulte también
linprog
| mpsread
| optimoptions
| prob2struct
| Optimize
Temas
- Aspectos básicos de la programación lineal de enteros mixtos: Basado en solvers
- Factory, Warehouse, Sales Allocation Model: Solver-Based
- Problema del viajante: Basado en solvers
- Solve Sudoku Puzzles via Integer Programming: Solver-Based
- Mixed-Integer Quadratic Programming Portfolio Optimization: Solver-Based
- Optimal Dispatch of Power Generators: Solver-Based
- Algoritmos de programación lineal de enteros mixtos (MILP)
- Tuning Integer Linear Programming
- Configuración de problema de optimización basada en solvers