Можем ли мы добавить только уникальные столбцы в кортеж при решении проблемы с помощью метода генерации столбцов? - PullRequest
0 голосов
/ 06 апреля 2019

Добавление только уникальных столбцов в кортеж.

Я пытаюсь добавить столбцы в кортеж при генерации столбцов после решения подзадачи и использования пула решений.Я вижу, что в моей проблеме одни и те же столбцы добавляются несколько раз.Есть ли способ добавить только уникальные столбцы в данные (или кортеж)?Я взял код из проблемы режущего материала.Может кто-нибудь, пожалуйста, объясните мне редактирование в этом коде?

writeln("Solve sub.");
  if ( subCplex.solve() &&
       subCplex.getObjValue() <= -RC_EPS) {
    writeln();
    writeln("SUB OBJECTIVE: ",subCplex.getObjValue());
masterData.Patterns.add(masterData.Patterns.size+1, subOpl.Select.solutionValue;
  } else {
    writeln("No new good pattern, stop.");

subCplex.solnPoolIntensity = 3; 
find larger no. of solutions

subCplex.populate();
var nsolns = subCplex.solnPoolNsolns;
for (var v = 1; v<=nsolns; v++) {
    subOpl.setPoolSolution(v);

    if(subCplex.getObjValue(v) <= -1.0e-10) {       
    masterData.Patterns.add(masterData.Patterns.size+1,subOpl.Select.solutionValue;
  }  

}

 masterData.Patterns.add(masterData.Patterns.size,1,subOpl.Use.solutionValue);
  masterOpl = new IloOplModel(masterDef,masterCplex);
  masterOpl.addDataSource(masterData);
  masterOpl.generate();
  // End sub model
     subData.end();
  subOpl.end();      

}

1 Ответ

2 голосов
/ 10 апреля 2019

CPLEX не имеют функции для этого.Вам нужно самостоятельно создать структуру данных, в которой хранятся все входные столбцы, и проверить, повторяются ли они или нет.- Яго Карвалью

...