• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java ModelIterator类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.sat4j.tools.ModelIterator的典型用法代码示例。如果您正苦于以下问题:Java ModelIterator类的具体用法?Java ModelIterator怎么用?Java ModelIterator使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ModelIterator类属于org.sat4j.tools包,在下文中一共展示了ModelIterator类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: countValidConfigurations

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
/****************************************************************************************************************
 *  Count feature model valid configurations
 ****************************************************************************************************************/
// Important: Performance of this operation is very poor as expected for a SAT solver, use a BDD instead
@Override
public double countValidConfigurations() throws FMReasoningException {
	if ( isConsistent() ) {
		ISolver solver = new ModelIterator(satSolver);
		double countSat = 0;
		long start = System.nanoTime();
		try {
			while (solver.isSatisfiable()) {
				solver.model();
				countSat++;				
				if ( (System.nanoTime()-start)/1E6 > timeout ) return -1;
			 }
		} catch (Exception e) {
			throw new FMReasoningException(e);
		}
		return countSat;
	}
	throw new FMReasoningException("Operation does not apply to inconsistent feature models");
}
 
开发者ID:axel-halin,项目名称:Thesis-JHipster,代码行数:24,代码来源:ReasoningWithSAT.java


示例2: testModelIterator

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testModelIterator() throws ContradictionException,
        TimeoutException {
    ModelIterator iterator = new ModelIterator(SolverFactory.newDefault());
    iterator.addClause(new VecInt(new int[] { 1, 2 }));
    iterator.addClause(new VecInt(new int[] { -1, -2 }));
    iterator.addClause(new VecInt(new int[] { -3, -4 }));
    iterator.addClause(new VecInt(new int[] { 5, 6 }));
    iterator.addClause(new VecInt(new int[] { -5, -6 }));
    iterator.addClause(new VecInt(new int[] { -1, 3 }));
    int counter = 0;
    int[] sub = new int[0];
    while (iterator.isSatisfiable()) {
        sub = iterator.model();
        counter++;
    }
    assertEquals(8, counter);
    assertEquals(6, sub.length);
}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:20,代码来源:BugSAT109.java


示例3: testSubModelIterator

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testSubModelIterator() throws ContradictionException,
        TimeoutException {
    IVecInt subset = new VecInt(new int[] { 1, 2, 3, 4 });
    ModelIterator iterator = new SubModelIterator(
            SolverFactory.newDefault(), subset);
    iterator.addClause(new VecInt(new int[] { 1, 2 }));
    iterator.addClause(new VecInt(new int[] { -1, -2 }));
    iterator.addClause(new VecInt(new int[] { -3, -4 }));
    iterator.addClause(new VecInt(new int[] { 5, 6 }));
    iterator.addClause(new VecInt(new int[] { -5, -6 }));
    iterator.addClause(new VecInt(new int[] { -1, 3 }));
    int counter = 0;
    int[] sub = new int[0];
    while (iterator.isSatisfiable()) {
        sub = iterator.model();
        counter++;
    }
    assertEquals(4, counter);
    assertEquals(4, sub.length);
}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:22,代码来源:BugSAT109.java


示例4: setUp

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Before
public void setUp() throws ContradictionException {
    PseudoOptDecorator pbsolver = new PseudoOptDecorator(
            SolverFactory.newDefault());
    IVecInt clause = new VecInt();
    pbsolver.newVar(1000);
    for (int i = 1; i <= 1000; i++) {
        clause.push(-i);
    }
    pbsolver.addClause(clause);
    Vec<BigInteger> weights = new Vec<BigInteger>();
    for (int i = 1; i <= 1000; i++) {
        weights.push(BigInteger.valueOf(5));
    }
    pbsolver.setObjectiveFunction(new ObjectiveFunction(clause, weights));
    this.solver = new ModelIterator(pbsolver);
}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:18,代码来源:TestGlobalTimeoutForOptimalModelEnumeration.java


示例5: testIteratingWithObjectiveFunctionWithDecorator

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testIteratingWithObjectiveFunctionWithDecorator() {
    IPBSolver solver = buildSolver2();

    IProblem problem = new ModelIterator(solver);
    int nbModel = 0;
    try {
        while (problem.isSatisfiable()) {
            problem.model(); // needed to discard that model
            nbModel++;
        }
    } catch (TimeoutException e) {
        fail();
    }
    assertEquals(4, nbModel);
}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:17,代码来源:TestLonca.java


示例6: testMaxSAtIteratorIfSat

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testMaxSAtIteratorIfSat() throws ContradictionException,
		TimeoutException {
	ISolver solver = new ModelIterator(new OptToSatAdapter(
			new MaxSatDecorator(SolverFactory.newDefault())));
	solver.newVar(3);
	IVecInt literals = new VecInt();
	literals.push(-1).push(-2).push(3);
	solver.addClause(literals);
	literals.clear();
	literals.push(-1).push(2);
	solver.addClause(literals);
	literals.clear();
	literals.push(-1).push(-3);
	solver.addClause(literals);
	literals.clear();
	assertTrue(solver.isSatisfiable());
	assertEquals(3, solver.model().length);
	System.out.println("" + solver.model(1) + solver.model(2)
			+ solver.model(3));
	assertTrue(solver.isSatisfiable());
	assertEquals(3, solver.model().length);
	System.out.println("" + solver.model(1) + solver.model(2)
			+ solver.model(3));
	assertTrue(solver.isSatisfiable());
	assertEquals(3, solver.model().length);
	System.out.println("" + solver.model(1) + solver.model(2)
			+ solver.model(3));
	assertTrue(solver.isSatisfiable());
	assertEquals(3, solver.model().length);
	System.out.println("" + solver.model(1) + solver.model(2)
			+ solver.model(3));
	assertFalse(solver.isSatisfiable());
}
 
开发者ID:axel-halin,项目名称:Thesis-JHipster,代码行数:35,代码来源:Bug275101.java


示例7: testMaxSAtIterator

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testMaxSAtIterator() throws ContradictionException,
		TimeoutException {
	ISolver solver = new ModelIterator(new OptToSatAdapter(
			new MaxSatDecorator(SolverFactory.newDefault())));
	solver.newVar(2);
	IVecInt literals = new VecInt();
	literals.push(-1).push(-2);
	solver.addClause(literals);
	literals.clear();
	literals.push(-1).push(2);
	solver.addClause(literals);
	literals.clear();
	literals.push(1).push(-2);
	solver.addClause(literals);
	literals.clear();
	literals.push(1).push(2);
	solver.addClause(literals);
	assertTrue(solver.isSatisfiable());
	assertEquals(2, solver.model().length);
	System.out.println("" + solver.model(1) + solver.model(2));
	assertTrue(solver.isSatisfiable());
	assertEquals(2, solver.model().length);
	System.out.println("" + solver.model(1) + solver.model(2));
	assertTrue(solver.isSatisfiable());
	assertEquals(2, solver.model().length);
	System.out.println("" + solver.model(1) + solver.model(2));
	assertTrue(solver.isSatisfiable());
	assertEquals(2, solver.model().length);
	System.out.println("" + solver.model(1) + solver.model(2));
	assertFalse(solver.isSatisfiable());
}
 
开发者ID:axel-halin,项目名称:Thesis-JHipster,代码行数:33,代码来源:Bug275101.java


示例8: tearDDown

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Before
public void tearDDown() throws ContradictionException {
	solver = new ModelIterator(SolverFactory.newDefault());
	IVecInt clause = new VecInt();
	for (int i = 1; i <= 1000; i++)
		clause.push(-i);
	solver.addClause(clause);
}
 
开发者ID:axel-halin,项目名称:Thesis-JHipster,代码行数:9,代码来源:TestGroupedTimeoutModelEnumeration.java


示例9: testBugReport

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testBugReport() throws ContradictionException, TimeoutException {
	ISolver theSolver = SolverFactory.newDefault();
	ModelIterator solver = new ModelIterator(new OptToSatAdapter(
			new MaxSatDecorator(SolverFactory.newDefault())));
	System.out.println("Taille de voc : " + solver.nVars());
	solver.newVar(3);
	solver.setExpectedNumberOfClauses(3);
	solver.addClause(new VecInt(new int[] { 1, 2 }));
	solver.addClause(new VecInt(new int[] { 1, 3 }));
	solver.addClause(new VecInt(new int[] { 2, 3 }));
	System.out.println("Taille de voc : " + solver.nVars());
	if (solver.isSatisfiable()) {
		System.out.println("Taille du modèle : " + solver.model().length);
		for (int i = 1; i <= solver.model().length; i++) {
			System.out.print(solver.model(i) + " ");
		}
		System.out.println();
	}

	solver.reset();
	System.out.println("Taille de voc : " + solver.nVars());
	solver.newVar(2);
	solver.setExpectedNumberOfClauses(2);
	solver.addClause(new VecInt(new int[] { 1, 2 }));
	solver.addClause(new VecInt(new int[] { 2 }));
	System.out.println("Taille de voc : " + solver.nVars());
	if (solver.isSatisfiable()) {
		System.out.println("Taille du modèle : " + solver.model().length);
		for (int i = 1; i <= solver.model().length; i++) {
			System.out.print(solver.model(i) + " ");
		}
		System.out.println();
	}
	System.out.println("The End.");

}
 
开发者ID:axel-halin,项目名称:Thesis-JHipster,代码行数:38,代码来源:BugFatih.java


示例10: getSolutions

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
public String getSolutions(int number) throws TimeoutException {
	if (contradiction)
           return "contradiction\n";

	StringBuffer out = new StringBuffer();
       IProblem problem = new ModelIterator(solver);
       int[] lastModel = null;
   	for (int i = 0; i < number; i++) {
		if (!problem.isSatisfiable(i > 0)) {
			out.append("only " + i + " solutions\n");
			break;
		}
		int[] model = problem.model();
		if (lastModel != null) {
			boolean same = true;
			for (int j = 0; j < model.length; j++)
				if (model[j] != lastModel[j])
					same = false;
			if (same) {
				out.append("only " + i + " solutions\n");
				break;
			}
		}
		lastModel = model;
		StringBuilder pos = new StringBuilder();
		StringBuilder neg = new StringBuilder();
		for (int var : model)
			if (var > 0)
				pos.append(intToVar.get(Math.abs(var)) + " ");
			else
				neg.append(intToVar.get(Math.abs(var)) + " ");
		out.append("true: " + pos + "    false: " + neg + "\n");
	}
   	return out.toString();
}
 
开发者ID:axel-halin,项目名称:Thesis-JHipster,代码行数:36,代码来源:SatSolver.java


示例11: getSolution

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
public String getSolution() throws TimeoutException {
	if (contradiction)
           return null;

	StringBuilder out = new StringBuilder();
       IProblem problem = new ModelIterator(solver);
	if (!problem.isSatisfiable())
		return null;
	int[] model = problem.model();
	for (int var : model)
		if (var > 0)
			out.append(intToVar.get(Math.abs(var)) + "\n");
   	return out.toString();
}
 
开发者ID:axel-halin,项目名称:Thesis-JHipster,代码行数:15,代码来源:SatSolver.java


示例12: testMaxSAtIterator

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testMaxSAtIterator() throws ContradictionException,
        TimeoutException {
    ISolver solver = new ModelIterator(new OptToSatAdapter(
            new MaxSatDecorator(SolverFactory.newDefault())));
    solver.newVar(2);
    IVecInt literals = new VecInt();
    literals.push(-1).push(-2);
    solver.addClause(literals);
    literals.clear();
    literals.push(-1).push(2);
    solver.addClause(literals);
    literals.clear();
    literals.push(1).push(-2);
    solver.addClause(literals);
    literals.clear();
    literals.push(1).push(2);
    solver.addClause(literals);
    assertTrue(solver.isSatisfiable());
    assertEquals(2, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2));
    assertTrue(solver.isSatisfiable());
    assertEquals(2, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2));
    assertTrue(solver.isSatisfiable());
    assertEquals(2, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2));
    assertTrue(solver.isSatisfiable());
    assertEquals(2, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2));
    assertFalse(solver.isSatisfiable());
}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:33,代码来源:Bug275101.java


示例13: setUp

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Before
public void setUp() throws ContradictionException {
    this.solver = new ModelIterator(SolverFactory.newDefault());
    IVecInt clause = new VecInt();
    for (int i = 1; i <= 15; i++) {
        clause.push(-i);
    }
    this.solver.addClause(clause);
}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:10,代码来源:TestGroupedTimeoutModelEnumeration.java


示例14: testBugReport

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testBugReport() throws ContradictionException, TimeoutException {
    ModelIterator solver = new ModelIterator(new OptToSatAdapter(
            new MaxSatDecorator(SolverFactory.newDefault())));
    System.out.println("Taille de voc : " + solver.nVars());
    solver.newVar(3);
    solver.setExpectedNumberOfClauses(3);
    solver.addClause(new VecInt(new int[] { 1, 2 }));
    solver.addClause(new VecInt(new int[] { 1, 3 }));
    solver.addClause(new VecInt(new int[] { 2, 3 }));
    System.out.println("Taille de voc : " + solver.nVars());
    if (solver.isSatisfiable()) {
        System.out.println("Taille du modèle : " + solver.model().length);
        for (int i = 1; i <= solver.model().length; i++) {
            System.out.print(solver.model(i) + " ");
        }
        System.out.println();
    }

    solver.reset();
    System.out.println("Taille de voc : " + solver.nVars());
    solver.newVar(2);
    solver.setExpectedNumberOfClauses(2);
    solver.addClause(new VecInt(new int[] { 1, 2 }));
    solver.addClause(new VecInt(new int[] { 2 }));
    System.out.println("Taille de voc : " + solver.nVars());
    if (solver.isSatisfiable()) {
        System.out.println("Taille du modèle : " + solver.model().length);
        for (int i = 1; i <= solver.model().length; i++) {
            System.out.print(solver.model(i) + " ");
        }
        System.out.println();
    }
    System.out.println("The End.");

}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:37,代码来源:BugFatih.java


示例15: testBugReport

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testBugReport() throws ContradictionException, TimeoutException {
	ModelIterator solver = new ModelIterator(new OptToSatAdapter(
			new MaxSatDecorator(SolverFactory.newDefault())));
	// MaxSatDecorator solver = new
	// MaxSatDecorator(SolverFactory.newDefault());
	System.out.println("Taille de voc : " + solver.nVars());
	solver.newVar(13);
	solver.setExpectedNumberOfClauses(24);
	solver.addClause(new VecInt(new int[] { -1 }));
	solver.addClause(new VecInt(new int[] { -2 }));
	solver.addClause(new VecInt(new int[] { -3, 4 }));
	solver.addClause(new VecInt(new int[] { -3, 5 }));
	solver.addClause(new VecInt(new int[] { -3, 6 }));
	solver.addClause(new VecInt(new int[] { -1, 7 }));
	solver.addClause(new VecInt(new int[] { -2, 6 }));
	solver.addClause(new VecInt(new int[] { -4, 3 }));
	solver.addClause(new VecInt(new int[] { -5, 3 }));
	solver.addClause(new VecInt(new int[] { -6, 3, 2 }));
	solver.addClause(new VecInt(new int[] { -7, 1 }));
	solver.addClause(new VecInt(new int[] { 3, -1, 8 }));
	solver.addClause(new VecInt(new int[] { -3, 1, 8 }));
	solver.addClause(new VecInt(new int[] { -3, -1, 9 }));
	solver.addClause(new VecInt(new int[] { -9 }));
	solver.addClause(new VecInt(new int[] { 1, -2, 10 }));
	solver.addClause(new VecInt(new int[] { -1, 2, 10 }));
	solver.addClause(new VecInt(new int[] { -1, -2, 11 }));
	solver.addClause(new VecInt(new int[] { -10 }));
	solver.addClause(new VecInt(new int[] { -11 }));
	solver.addClause(new VecInt(new int[] { 3, -1, 12 }));
	solver.addClause(new VecInt(new int[] { -3, 1, 12 }));
	solver.addClause(new VecInt(new int[] { -3, -1, 13 }));
	solver.addClause(new VecInt(new int[] { -13 }));
	System.out.println("Taille de voc : " + solver.nVars());
	if (solver.isSatisfiable()) {
		System.out.println("Taille du modèle : " + solver.model().length);
		for (int i = 1; i <= solver.model().length; i++) {
			System.out.print(solver.model(i) + " ");
		}
		System.out.println();
	}
}
 
开发者ID:axel-halin,项目名称:Thesis-JHipster,代码行数:43,代码来源:BugFatih2.java


示例16: testThatItWorksWithTwoDecorators

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testThatItWorksWithTwoDecorators() {
    ModelIterator it = new ModelIterator(new GateTranslator(solver));
    assertEquals(solver, it.getSolvingEngine());
}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:6,代码来源:TestSolverEngine.java


示例17: testBugReport

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testBugReport() throws ContradictionException, TimeoutException {
    ModelIterator solver = new ModelIterator(new OptToSatAdapter(
            new MaxSatDecorator(SolverFactory.newDefault())));
    // MaxSatDecorator solver = new
    // MaxSatDecorator(SolverFactory.newDefault());
    System.out.println("Taille de voc : " + solver.nVars());
    solver.newVar(13);
    solver.setExpectedNumberOfClauses(24);
    solver.addClause(new VecInt(new int[] { -1 }));
    solver.addClause(new VecInt(new int[] { -2 }));
    solver.addClause(new VecInt(new int[] { -3, 4 }));
    solver.addClause(new VecInt(new int[] { -3, 5 }));
    solver.addClause(new VecInt(new int[] { -3, 6 }));
    solver.addClause(new VecInt(new int[] { -1, 7 }));
    solver.addClause(new VecInt(new int[] { -2, 6 }));
    solver.addClause(new VecInt(new int[] { -4, 3 }));
    solver.addClause(new VecInt(new int[] { -5, 3 }));
    solver.addClause(new VecInt(new int[] { -6, 3, 2 }));
    solver.addClause(new VecInt(new int[] { -7, 1 }));
    solver.addClause(new VecInt(new int[] { 3, -1, 8 }));
    solver.addClause(new VecInt(new int[] { -3, 1, 8 }));
    solver.addClause(new VecInt(new int[] { -3, -1, 9 }));
    solver.addClause(new VecInt(new int[] { -9 }));
    solver.addClause(new VecInt(new int[] { 1, -2, 10 }));
    solver.addClause(new VecInt(new int[] { -1, 2, 10 }));
    solver.addClause(new VecInt(new int[] { -1, -2, 11 }));
    solver.addClause(new VecInt(new int[] { -10 }));
    solver.addClause(new VecInt(new int[] { -11 }));
    solver.addClause(new VecInt(new int[] { 3, -1, 12 }));
    solver.addClause(new VecInt(new int[] { -3, 1, 12 }));
    solver.addClause(new VecInt(new int[] { -3, -1, 13 }));
    solver.addClause(new VecInt(new int[] { -13 }));
    System.out.println("Taille de voc : " + solver.nVars());
    if (solver.isSatisfiable()) {
        System.out.println("Taille du modèle : " + solver.model().length);
        for (int i = 1; i <= solver.model().length; i++) {
            System.out.print(solver.model(i) + " ");
        }
        System.out.println();
    }
}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:43,代码来源:BugFatih2.java


示例18: testMaxSAtIteratorIfSat

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
@Test
public void testMaxSAtIteratorIfSat() throws ContradictionException,
        TimeoutException {
    ISolver solver = new ModelIterator(new OptToSatAdapter(
            new MaxSatDecorator(SolverFactory.newDefault())));
    solver.newVar(3);
    IVecInt literals = new VecInt();
    literals.push(-1).push(-2).push(3);
    solver.addClause(literals);
    literals.clear();
    literals.push(-1).push(2);
    solver.addClause(literals);
    literals.clear();
    literals.push(-1).push(-3);
    solver.addClause(literals);
    literals.clear();
    assertTrue(solver.isSatisfiable());
    assertEquals(3, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2)
            + solver.model(3));
    assertTrue(solver.isSatisfiable());
    assertEquals(3, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2)
            + solver.model(3));
    assertTrue(solver.isSatisfiable());
    assertEquals(3, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2)
            + solver.model(3));
    assertTrue(solver.isSatisfiable());
    assertEquals(3, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2)
            + solver.model(3));
    assertTrue(solver.isSatisfiable());
    assertEquals(3, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2)
            + solver.model(3));
    assertTrue(solver.isSatisfiable());
    assertEquals(3, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2)
            + solver.model(3));
    assertTrue(solver.isSatisfiable());
    assertEquals(3, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2)
            + solver.model(3));
    assertTrue(solver.isSatisfiable());
    assertEquals(3, solver.model().length);
    System.out.println("" + solver.model(1) + solver.model(2)
            + solver.model(3));
    assertFalse(solver.isSatisfiable());
}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:51,代码来源:Bug275101.java


示例19: BugSAT117ModelIterator

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
public BugSAT117ModelIterator() {
    solver = SolverFactory.newLight();
    gateTranslator = new GateTranslator(solver);
    modelIterator = new ModelIterator(solver);
}
 
开发者ID:TakehideSoh,项目名称:Scarab,代码行数:6,代码来源:BugSAT117ModelIterator.java


示例20: answer

import org.sat4j.tools.ModelIterator; //导入依赖的package包/类
public PerformanceResult answer(Reasoner r) {
	int iteration = 0;
	if (r == null) {
		throw new FAMAParameterException("Reasoner :Not specified");
	}

	features = new String[((Sat4jReasoner) r).getVariables().size()];
	cnfvalues = new String[((Sat4jReasoner) r).getVariables().size()];

	int i = 0;
	for (Entry<String, String> entry : ((Sat4jReasoner) r).getVariables().entrySet()) {
		features[i] = entry.getKey();
		cnfvalues[i] = entry.getValue();
		i++;
	}

	// prepare the reasoning mechanism
	String cnfmodel = ((Sat4jReasoner) r).getPartialCNF(1);
	solver = SolverFactory.newDefault();
	ModelIterator mi = new ModelIterator(solver);
	solver.setTimeout(3600); // 1 hour timeout
	Reader reader = new DimacsReader(mi);

	try {
		reader.parseInstance(new ByteArrayInputStream((cnfmodel).getBytes(StandardCharsets.UTF_8)));

		// First iteration
		PrintWriter out = new PrintWriter(outputDirectory + "/" + iteration + ".out");
		for (i = 0; i < features.length; i++) {
			if (isValidConf(i + 1)) {
				out.println((i + 1) + "\t" + features[i]);
			}
		}
		out.flush();
		out.close();

		// whatever it remains
		File file = new File(outputDirectory + "/" + iteration + ".out");
		while (file.length() > 0) {
			iteration++;

			try (BufferedReader br = new BufferedReader(new FileReader(file))) {
				String line;
				while ((line = br.readLine()) != null) {
					// process the line.

					String key = line.substring(0, line.indexOf('\t'));
					String value = line.substring(line.indexOf('\t') + 1, line.length());
					map(key, value, iteration);

				}
			}

			file = new File(outputDirectory + "/" + iteration + ".out");
		}

	} catch (ParseFormatException | ContradictionException | IOException e) {
		e.printStackTrace();
	}
	return null;
}
 
开发者ID:isa-group,项目名称:FaMA,代码行数:62,代码来源:Sat4jAllConfigurationsQuestion.java



注:本文中的org.sat4j.tools.ModelIterator类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java Range类代码示例发布时间:2022-05-22
下一篇:
Java RuntimeOperatorException类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap