Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Las variables con nombres duplicados no permitidos

Si utiliza dos variables diferentes que tienen el mismo nombre, las expresiones de optimización, las restricciones o los problemas pueden producir un error. Este error es problemático cuando se crea una variable, a continuación, crear una expresión con esa variable y, a continuación, volver a crear la variable. Supongamos que crea la siguiente variable y expresión de restricción:

x = optimvar('x',10,2); cons = sum(x,2) == 1;

En este punto, se da cuenta de que tenía la intención de crear variables de enteros. Así que recreamos la variable, cambiando su tipo.

x = optimvar('x',10,2,'Type','integer');

Crea un objetivo y un problema.

obj = sum(x*[2;3]); prob = optimproblem('Objective',obj);

Ahora intente poner la restricción en el problema.

prob.Constraints = cons

En este momento, usted consigue un mensaje de error que indica que que aparece en el mismo problema debe tener propiedades "" distintas.OptimizationVariablesName El problema es que cuando se vuelve a crear la variable, es una nueva variable, no relacionada con la expresión de restricción.x

Puede corregir este problema de dos maneras.

  • Cree una nueva expresión de restricción utilizando la corriente.x

    cons = sum(x,2) == 1; prob.Constraints = cons;
  • Recupere la variable original creando un problema con la expresión anterior.x Actualice la variable recuperada para que tenga la propiedad correcta.Type Utilice la variable recuperada para el problema y el objetivo.

    oprob = optimproblem('Constraints',cons); x = oprob.Variables.x; x.Type = 'integer'; oprob.Objective = sum(x*[2;3]);

    Este método puede ser útil si ha creado más expresiones utilizando la variable antigua que las expresiones que utilizan la nueva variable.

Temas relacionados