示例#1
0
文件: circuit.cpp 项目: lquan/CSAI
 void
 circuit(Home home, const IntArgs& c, 
         const IntVarArgs& x, IntVar z, 
         IntConLevel icl) {
   if (home.failed()) return;
   IntVarArgs y(home, x.size(), Int::Limits::min, Int::Limits::max);
   circuit(home, c, x, y, z, icl);
 }
示例#2
0
	double flux(const index_type circuitIndex) const {
		const Circuit& c = circuit(circuitIndex);
		double sum = 0.0;

		for (Circuit::const_iterator i = c.begin(), last = c.end(); i != last; ++i) {
			sum += i->weight * contact(i->index).phase;
		}

		return c.square * sum;
	}
示例#3
0
void simnet()
{
  Signal a, b, c, d, F;                   // Switch and output objects 

  Switch ( SD("1a"), a, 'a' );            // Switch a controlled by 'a' key
  Switch ( SD("2a"), b, 'b' );            // Switch b controlled by 'b' key
  Switch ( SD("3a"), c, 'c' );            // Switch c controlled by 'c' key
  Switch ( SD("4a"), d, 'd' );            // Switch d controlled by 'd' key
 
  circuit( SD("1c-4c"), a, b, c, d, F );

  Probe ( (SD("2e"), "F"), F );           // Probe
}
示例#4
0
文件: circuit.cpp 项目: lquan/CSAI
 void
 circuit(Home home, const IntArgs& c, 
         const IntVarArgs& x, const IntVarArgs& y, IntVar z, 
         IntConLevel icl) {
   int n = x.size();
   if ((y.size() != n) || (c.size() != n*n))
     throw Int::ArgumentSizeMismatch("Graph::circuit");
   circuit(home, x, icl);
   if (home.failed()) return;
   IntArgs cx(n);
   for (int i=n; i--; ) {
     for (int j=0; j<n; j++)
       cx[j] = c[i*n+j];
     element(home, cx, x[i], y[i]);
   }
   linear(home, y, IRT_EQ, z);
 }
示例#5
0
int main(int argc, const char * argv[]){
    
    /*
    //MŰKÖDÉS FELHASZNÁLÓVAL
    
    //függvény beolvasása a szabványos bemenetről
    std::cout << "Kérlek add meg a hálózatod maxtermekkel!"<< std::endl;
    std::cout << "(Csak nagy- vagy csak kisbetűket használj!)"<< std::endl;
    std::cout << "Maxterm:"<< std::endl;
    std::cout << "> ";
    std::string userInput;
    std::cin >> userInput;

    Function function(userInput); //egy függvényobjektum létrehozása (funcion lesz a neve)
    std::cout << std::endl;
    
    
    //Megadott függvény kiírása.
    std::cout << "A megadott függvény: " << userInput << std::endl;
    std::cout << std::endl;
    
    //Megadott függvény kapuinak neveinek a kiírása.
    std::cout << "A hálózat bemenetei a megadott függvény alapján: ";
    std::cout << function.getLetters() << std::endl;
    std::cout << std::endl;

    //Kapuk darabszámának kiírása.
    std::string gates = function.getLetters();
    size_t gatesnumber = gates.length();
    std::cout << "A hálózatnak " << gatesnumber << " bemenete van." << std::endl;
    std::cout << std::endl;
    
    
    //Gates osztály példányosítása és értékekkel való feltöltése.
    Gates gate(gatesnumber);
    gate.setGates();

    //A megadott értékek kiírása sorban.
    std::cout << std::endl;
    std::cout << "A hálózat bemeneteinek értéke sorban: ";
    gate.printGates();
    
    
    //Az eredeti függvénybe behelyettesítve az értékek:
    std::cout << std::endl;
    std::cout << "A kimenet: ";
    
    Circuit circuit(function, gate);
    
    circuit.printCircuit();
    */
    
    
    //TESZTELÉS ELŐRE MEGADOTT ADATOKKAL
     //függvény beolvasása a szabványos bemenetről
     std::cout << "Kérlek add meg a hálózatod maxtermekkel!"<< std::endl;
     std::cout << "(Csak nagy- vagy csak kisbetűket használj!)"<< std::endl;
     std::cout << "Maxterm:"<< std::endl;
     std::cout << "> ";
     std::string userInput = "abc+ad+fgh+i";
     
     Function function(userInput); //egy függvényobjektum létrehozása (funcion lesz a neve)
     std::cout << std::endl;
     
     
     //Megadott függvény kiírása.
     std::cout << "A megadott függvény: " << userInput << std::endl;
     std::cout << std::endl;
     
     //Megadott függvény kapuinak neveinek a kiírása.
     std::cout << "A hálózat bemenetei a megadott függvény alapján: ";
     std::cout << function.getLetters() << std::endl;
     std::cout << std::endl;
     
     //Kapuk darabszámának kiírása.
     std::string gates = function.getLetters();
     size_t gatesnumber = gates.length();
     std::cout << "A hálózatnak " << gatesnumber << " bemenete van." << std::endl;
     std::cout << std::endl;
     
     
     //Gates osztály példányosítása és értékekkel való feltöltése.
     Gates gate(gatesnumber);

     gate.setGatesOneByOne(0, 1);
     gate.setGatesOneByOne(1, 1);
     gate.setGatesOneByOne(2, 1);
     gate.setGatesOneByOne(3, 0);
     gate.setGatesOneByOne(4, 1);
     gate.setGatesOneByOne(5, 0);
     gate.setGatesOneByOne(6, 0);
     gate.setGatesOneByOne(7, 1);
     gate.setGatesOneByOne(8, 1);
    
    
     //A megadott értékek kiírása sorban.
     std::cout << std::endl;
     std::cout << "A hálózat bemeneteinek értéke sorban: ";
     gate.printGates();
     
     
     //Az eredeti függvénybe behelyettesítve az értékek:
     std::cout << std::endl;
     std::cout << "A kimenet: ";
     
     Circuit circuit(function, gate);
     
     circuit.printCircuit();
    
    try {
      if(circuit.getResult() == true)
          std::cout << "Az eredmény helyes!" << std::endl;
          return 0;
    }
    catch(std::exception e) {
        std::cout << "Az eredmény hibás!" << std::endl;
        return 1;
    }
    
}
示例#6
0
Inductor::~Inductor() {
    circuit().removeComponent(this);
}
示例#7
0
Capacitor::~Capacitor() {
    circuit().removeComponent(this);
}
示例#8
0
ECDiode::~ECDiode() {
    circuit().removeComponent(this);
}