bitstringordererdemo2.java

来自「Java版的SAT求解器」· Java 代码 · 共 77 行

JAVA
77
字号
/* * BitStringOrdererDemo2.java	1.0 05/05/04 * * Copyright 2005 Positronic Software. * * */package positronic.satisfiability.demos;import java.util.ArrayList;import java.util.List;import positronic.satisfiability.bitstring.BitString;import positronic.satisfiability.bitstring.BitStringOrderer;import positronic.satisfiability.bitstring.IBitString;import positronic.satisfiability.elements.BitFixer;import positronic.satisfiability.elements.BooleanLiteral;import positronic.satisfiability.elements.BooleanVariable;import positronic.satisfiability.elements.Conjunction;import positronic.satisfiability.elements.IBooleanVariable;import positronic.satisfiability.elements.IProblem;import positronic.satisfiability.solutions.PartialSolution;public class BitStringOrdererDemo2{    public static void main(String[] args) throws Exception  {  	int degreeX=6;    int degreeY=4;    ArrayList pfix=new ArrayList();    IBitString X=new BitString("X",new IBooleanVariable[degreeX]);    for(int i=0;i<X.size();i++)    {      boolean value;      if(Math.random()<.5) value=true;      else value=false;      X.setBooleanVariable(i,BooleanVariable.getBooleanVariable(X.getName()+"_"+i));      X.getBooleanVariable(i).setValue(value);      pfix.add(new BitFixer(X.getBooleanVariable(i),value));    }    System.out.println(X);    IBitString Y=new BitString("Y",new IBooleanVariable[degreeY]);    for(int i=0;i<Y.size();i++)    {      boolean value;      if(Math.random()<.5) value=true;      else value=false;      Y.setBooleanVariable(i,BooleanVariable.getBooleanVariable(Y.getName()+"_"+i));      Y.getBooleanVariable(i).setValue(value);      pfix.add(new BitFixer(Y.getBooleanVariable(i),value));    }    System.out.println(Y);    IProblem fix=new Conjunction(pfix);        IProblem bta=new BitStringOrderer(X,Y);    System.out.println(bta);    IProblem problem=new Conjunction(fix,bta);        List s=PartialSolution.solveList(problem);		if(s!=null && s.size()>0)    {      BooleanLiteral.interpret(s);    	System.out.println("X= "+X);    	System.out.println("Y= "+Y);    }    else      System.out.println("No solution.");  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?