<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Visual Studio und CPLEX - seltsame Ausgaben, &amp;quot;nicht deklarierter Bezeichner&amp;quot;]]></title><description><![CDATA[<p>Hallo miteinander!</p>
<p>Ich bin mittlerweile völlig verzweifelt. Ich habe am Dienstag eine Ergebnispräsentation und mein Programm in c++ läuft noch immer nicht richtig. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /> Es geht darum, das lineare Programm MLCLSP zu implementieren und die Zielfunktion um eine Sanktion für nicht-Auslastung von Ressourcen (Kosten m_j) zu erweitern.</p>
<p>Es sind scheinbar mehrere Dinge in meinem Programm verkehrt. Das - so vermute ich - am leichtesten zu lösende Problem ist folgendes: Ich habe 3 Nebenbedingungen im Programm und bekomme, wenn ich den Befehl &quot;NB1.end();&quot; (auch NB2 und NB3)verwenden möchte, die Fehlermeldung &quot;nicht deklarierter Bezeichner&quot;. Ich vermute, dies hängt mit den &quot;For&quot;-Schleifen in den Nebenbedingungen zusammen, kann den Fehler aber nicht finden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Des Weiteren erzeugt mein Programm zur Fehlerfindung eine Textdatei &quot;Model.lp&quot;. Diese lässt sich mit der Musterlösung vergleichen und zeigt, dass bei mir durchaus einiges im Argen liegt. Meine Kenntnisse in c++ sind jedoch so begrenzt, dass ich an meine Grenzen stoße und daher Hilfe benötige. Entsprechend wäre es wahrscheinlich am Besten, wenn Vorschläge so einfach wie möglich formuliert sind, mit Fachtermina kenne ich mich nicht aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich hoffe, irgendjemande kann mir helfen und ich bin schon im Voraus überaus dankbar, auch für jegliche Form von Teillösung oder Inspiration!</p>
<pre><code>#include &lt;ilcplex/ilocplex.h&gt;
#include &lt;iostream&gt; //fuer Ausgabe
#include &lt;fstream&gt;  //fuer Einlesen

using namespace std;

int main()
{
	//Umgebung u Modell erzeugen, Modell Umgebung zuweisen
	IloEnv env;
	IloModel model(env);

	//Oeffnet Datei im Lesemodus.
	std::ifstream myfile (&quot;small_instance.txt&quot;);
	if	(!myfile.good()){	
		std::cout &lt;&lt; &quot;instanz nicht gefunden!&quot; &lt;&lt; std::endl; 
		system(&quot;pause&quot;);	
		return 1;
	}

	//Aenderung 2: Reihenfolge einlesen
	//Definition der Eingabeparameter
	IloIntArray s_k(env);							//Rüstkosten für Produkt k
	IloIntArray h_k(env);							//Lagerhaltungskosten für Produkt k
	IloIntArray z_k(env);							//Vorlaufzeit für Produkt k
	IloIntArray tr_k(env);							//Rüstzeit für Produkt k
	IloIntArray tb_k(env);							//Produktionszeit für Produkt k
	IloArray&lt;IloIntArray&gt; d_k_t(env);				//Primärbedarf für Produkt k in Periode t //NACHFRAGE	
	IloArray&lt;IloIntArray&gt; a_k_i(env);				//Direktbedarf zwischen Produkten k und i
	IloArray&lt;IloIntArray&gt; b_j_t(env);				//Kapazität von Ressource j in Periode t
	IloArray&lt;IloIntArray&gt; K_j_k(env);				//Zuordnung Produkt k an Ressource j produzierbar
	IloIntArray m_j(env);							//Kosten pro Zeiteinheit für Nicht-Auslasten von ressource j
	// IloArray&lt;IloIntArray&gt; n_j_t(env);			//Nichtauslasten der Ressource j in Periode t, hier? oder als Entscheidungsvariable?

	//Einlesen aus Datei mit Hilfe CPLEX Parser - REIHENFOLGE IN .txt BEACHTEN!!!
	myfile &gt;&gt; s_k;
	myfile &gt;&gt; h_k;
	myfile &gt;&gt; z_k;
	myfile &gt;&gt; tr_k;
	myfile &gt;&gt; tb_k;
	myfile &gt;&gt; d_k_t;
	myfile &gt;&gt; a_k_i;
	myfile &gt;&gt; b_j_t;
	myfile &gt;&gt; K_j_k;
	myfile &gt;&gt; m_j;
	// myfile &gt;&gt; n_j_t; 

	int nProdukte = s_k.getSize();		//Abfrage Produkte
	int nRessourcen = b_j_t.getSize();	//Abfrage Ressourcen
	int nPerioden = b_j_t[0].getSize(); //Abfrage Perioden 

	std::cout &lt;&lt; &quot;Ruestkosten fuer Produkt k: &quot; &lt;&lt; s_k &lt;&lt; std::endl; //WICHTIG!!!
	std::cout &lt;&lt; &quot;Lagerhaltungskosten fuer Produkt k: &quot; &lt;&lt; h_k &lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Vorlaufzeit fuer Produkt k: &quot; &lt;&lt; z_k &lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Ruestzeit fuer Produkt k: &quot; &lt;&lt; tr_k &lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Produktionszeit fuer Produkt k: &quot; &lt;&lt; tb_k &lt;&lt; std::endl;

	IloInt n = d_k_t.getSize();	// Wäre hier Abfrage des Primärbedarfs
	std::cout &lt;&lt; &quot;Groesse des Primaerbedarfs fuer Produkt k in Periode t: &quot; &lt;&lt; n &lt;&lt; std::endl; //Anzahl der Produkte
	IloInt m = a_k_i.getSize();
	std::cout &lt;&lt; &quot;Direktbedarf zwischen Produkt k und i: &quot; &lt;&lt; m &lt;&lt; std::endl;
	IloInt o = b_j_t.getSize();
	std::cout &lt;&lt; &quot;Kapazität von Ressource j in Periode t: &quot; &lt;&lt; o &lt;&lt; std::endl;
	IloInt p = K_j_k.getSize();
	std::cout &lt;&lt; &quot;Produkt k an Ressource j produzierbar? &quot; &lt;&lt; p &lt;&lt; std::endl;

	//ENTSCHEIDUNGSVARIABLEN
	//binäre Entscheidungsvariable x //IloNumVarArray x(env, 100, 0, 1, ILOBOOL) 

	IloArray&lt;IloNumVarArray&gt; Gamma_k_t(env, nProdukte); //k in nProdukte 
	for (int t = 0; t &lt; nProdukte; ++t) 
		{
		Gamma_k_t[t] = IloNumVarArray(env, nPerioden, 0, 1, ILOBOOL); 
		}

	//Produktionsmenge des Produkts k in Periode t = q_k_t
	IloArray&lt;IloNumVarArray&gt; q_k_t(env, nProdukte);
	for (int t = 0; t &lt; nProdukte; ++t) 
		{
		q_k_t[t]=IloNumVarArray(env, nPerioden, 0, IloInfinity, ILOFLOAT); //untere Schranke = 0, daher NB 4 erfüllt
		}

	//Lagerbestand des Produktes k am Ende der Periode t = y_k_t
	IloArray&lt;IloNumVarArray&gt; y_k_t(env, nProdukte); 
	for (int t = 0; t &lt; nProdukte; ++t) 
		{
		y_k_t[t]=IloNumVarArray(env, nPerioden, 0, IloInfinity, ILOFLOAT); //Untere Schranke = 0, daher NB 4 erfüllt
		}	

	//NEBENBEDINGUNGEN 1-5

	//Nebenbedingung 1 

	for (int k = 0; k &lt; nProdukte; ++k) //k Element {1, ..., K}
		{
			for (int t = 0; t &lt; nPerioden; ++t) // t Element {1, ..., T}
				{
					cout &lt;&lt; &quot;Fuege Nebenbedingung 1 ein fuer Produkt: &quot; &lt;&lt; k &lt;&lt; &quot; in Periode &quot; &lt;&lt; t &lt;&lt; endl;
					IloExpr NB1(env);   // erst hier IloExpr NB(env anlegen)

					for (int i = 0; i &lt; nProdukte; ++i)
					{
						NB1-= a_k_i[k][i] * q_k_t[i][t];  //NB1 = NB1 -					
					}
					NB1-=  y_k_t[k][t];
					if (t-1&gt;=0)
					{
						NB1+= y_k_t[k][t-1];
					}
					if(t-z_k[k] &gt;= 0)
					{
						NB1+= q_k_t[k][t-z_k[k&rsqb;&rsqb;;
					}
					model.add(NB1 == d_k_t[k][t]);				// model.add erst hier 

			}
		}	

	//Nebenbedingung 2 // Schranke auf Basis von Produktionszeit mal Produktionsmenge/t plus Rüstzeit mal Entscheidungsvariable
	for (int j = 0; j &lt; nRessourcen; ++j)		//Vergleiche mit zweiter NB in testcasegenerator.pdf //j Element {1, ..., j}
		{
		for (int t = 0; t &lt; nPerioden; ++t)		//t Element {1, ..., t} 
			{
				IloExpr NB2(env);			// erst hier IloExpr NB(env anlegen)
				for(int k = 0; k &lt; nProdukte; ++k)
					{
					NB2+= tb_k[k] * q_k_t[k][t] + tr_k[k] * Gamma_k_t[k][t];  //sieht richtig aus
					}

				model.add(NB2 &lt;= b_j_t[j][t]);		
			}
		}

	//Nebenbedingung 3						
	for (int k = 0; k &lt; nProdukte ; ++k)
	{
		IloExpr NB3(env);
		for(int t=0; t &lt; nPerioden; ++t)
		{		
			NB3+= q_k_t[k][t] - 10000 * Gamma_k_t[k][t];			//M auf RIESIG setzen
		}	
		model.add(NB3 &lt;= 0);
	}

	//Minimiere Z
	//ZIELFUNKTION	
	IloExpr  ZF(env); 
	for (int k = 0; k &lt; nProdukte; ++k)
	{
		for(int t = 0; t &lt; nPerioden; ++t)
		{
			for (int j = 0; j &lt; nRessourcen; ++j) 
			{
			ZF+= s_k[k] * Gamma_k_t[k][t] + h_k[k] * y_k_t[k][t] + m_j[j] * (b_j_t[j][t] - tb_k[k] * q_k_t[k][t] + (tr_k[k] * Gamma_k_t[k][t])); //Klammern?!
			}
		}														
	}

	IloObjective myObj(env, ZF, IloObjective::Minimize);  //Zielfunktion //vgl.VL Folie 29

	//Modell hinzufuegen
	model.add(myObj);

	//Loesen //vgl. Folie 32 CPLEX-VL
	IloCplex cplex(env);
	cplex.extract(model);
	cplex.exportModel(&quot;model.lp&quot;);			// Ergebnisse werden in eine datei model.lp exportiert, die wird automatisch erstellt, man kann die mit dem txt editor öffnen

	if (cplex.solve()) {
     std::cout &lt;&lt; &quot;Systemstatus &quot; &lt;&lt; cplex.getStatus() &lt;&lt; std::endl;
     std::cout &lt;&lt; &quot;Zielfunktionswert = &quot; &lt;&lt; cplex.getObjValue() &lt;&lt; std::endl;

     //Ausgabe
     for(int k = 0; k &lt; nProdukte; ++k)
			{
				for (int t = 0; t &lt; nPerioden; ++t)
				{
					IloNum value = cplex.getValue(q_k_t[k][t]);
					std::cout &lt;&lt; &quot;Produktionsmenge_Gesamt Produkt &quot; &lt;&lt; k &lt;&lt; &quot; Periode &quot; &lt;&lt; t &lt;&lt; &quot; : &quot; &lt;&lt; value &lt;&lt; std::endl;
				}
			} 
	}
	else 
	{
		std::cout &lt;&lt; &quot;Keine Lösung&quot; &lt;&lt; std::endl;
	}

	ZF.end();
	//NB3.end();  
	//NB2.end();
	//NB1.end();

	m_j.end();
	K_j_k.end();
	b_j_t.end();
	a_k_i.end();
	d_k_t.end();
	tb_k.end();
	tr_k.end();
	z_k.end();
	h_k.end();
	s_k.end();
	myfile.close();
	env.end();

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Falls es etwas hilft: Die Ausgabe in der Datei &quot;Model.lp&quot; liest sich wie folgt:</p>
<p>\ENCODING=ISO-8859-1<br />
\Problem name: IloCplex</p>
<p>Minimize<br />
obj: 6 x1 - 20 x2 + 6 x3 - 20 x4 + 6 x5 - 20 x6 + 6 x7 - 20 x8 + 14 x9<br />
+ 14 x10 + 14 x11 + 14 x12 + x13<br />
Subject To<br />
c1: - x1 + x2 = 0<br />
c2: x1 - x3 + x4 = 0<br />
c3: - x2 - x5 + x6 = 2<br />
c4: - x4 + x5 - x7 + x8 = 2<br />
c5: 2 x2 + 2 x6 + x9 + x10 &lt;= 15<br />
c6: 2 x4 + 2 x8 + x11 + x12 &lt;= 15<br />
c7: 2 x2 + 2 x6 + x9 + x10 &lt;= 10<br />
c8: 2 x4 + 2 x8 + x11 + x12 &lt;= 10<br />
c9: x2 + x4 - 10000 x9 - 10000 x11 &lt;= 0<br />
c10: x6 + x8 - 10000 x10 - 10000 x12 &lt;= 0<br />
Bounds<br />
0 &lt;= x9 &lt;= 1<br />
0 &lt;= x10 &lt;= 1<br />
0 &lt;= x11 &lt;= 1<br />
0 &lt;= x12 &lt;= 1<br />
x13 = 500<br />
Binaries<br />
x9 x10 x11 x12<br />
End</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/330728/visual-studio-und-cplex-seltsame-ausgaben-quot-nicht-deklarierter-bezeichner-quot</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 22:50:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330728.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Jan 2015 22:37:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Visual Studio und CPLEX - seltsame Ausgaben, &amp;quot;nicht deklarierter Bezeichner&amp;quot; on Fri, 23 Jan 2015 22:37:25 GMT]]></title><description><![CDATA[<p>Hallo miteinander!</p>
<p>Ich bin mittlerweile völlig verzweifelt. Ich habe am Dienstag eine Ergebnispräsentation und mein Programm in c++ läuft noch immer nicht richtig. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /> Es geht darum, das lineare Programm MLCLSP zu implementieren und die Zielfunktion um eine Sanktion für nicht-Auslastung von Ressourcen (Kosten m_j) zu erweitern.</p>
<p>Es sind scheinbar mehrere Dinge in meinem Programm verkehrt. Das - so vermute ich - am leichtesten zu lösende Problem ist folgendes: Ich habe 3 Nebenbedingungen im Programm und bekomme, wenn ich den Befehl &quot;NB1.end();&quot; (auch NB2 und NB3)verwenden möchte, die Fehlermeldung &quot;nicht deklarierter Bezeichner&quot;. Ich vermute, dies hängt mit den &quot;For&quot;-Schleifen in den Nebenbedingungen zusammen, kann den Fehler aber nicht finden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Des Weiteren erzeugt mein Programm zur Fehlerfindung eine Textdatei &quot;Model.lp&quot;. Diese lässt sich mit der Musterlösung vergleichen und zeigt, dass bei mir durchaus einiges im Argen liegt. Meine Kenntnisse in c++ sind jedoch so begrenzt, dass ich an meine Grenzen stoße und daher Hilfe benötige. Entsprechend wäre es wahrscheinlich am Besten, wenn Vorschläge so einfach wie möglich formuliert sind, mit Fachtermina kenne ich mich nicht aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich hoffe, irgendjemande kann mir helfen und ich bin schon im Voraus überaus dankbar, auch für jegliche Form von Teillösung oder Inspiration!</p>
<pre><code>#include &lt;ilcplex/ilocplex.h&gt;
#include &lt;iostream&gt; //fuer Ausgabe
#include &lt;fstream&gt;  //fuer Einlesen

using namespace std;

int main()
{
	//Umgebung u Modell erzeugen, Modell Umgebung zuweisen
	IloEnv env;
	IloModel model(env);

	//Oeffnet Datei im Lesemodus.
	std::ifstream myfile (&quot;small_instance.txt&quot;);
	if	(!myfile.good()){	
		std::cout &lt;&lt; &quot;instanz nicht gefunden!&quot; &lt;&lt; std::endl; 
		system(&quot;pause&quot;);	
		return 1;
	}

	//Aenderung 2: Reihenfolge einlesen
	//Definition der Eingabeparameter
	IloIntArray s_k(env);							//Rüstkosten für Produkt k
	IloIntArray h_k(env);							//Lagerhaltungskosten für Produkt k
	IloIntArray z_k(env);							//Vorlaufzeit für Produkt k
	IloIntArray tr_k(env);							//Rüstzeit für Produkt k
	IloIntArray tb_k(env);							//Produktionszeit für Produkt k
	IloArray&lt;IloIntArray&gt; d_k_t(env);				//Primärbedarf für Produkt k in Periode t //NACHFRAGE	
	IloArray&lt;IloIntArray&gt; a_k_i(env);				//Direktbedarf zwischen Produkten k und i
	IloArray&lt;IloIntArray&gt; b_j_t(env);				//Kapazität von Ressource j in Periode t
	IloArray&lt;IloIntArray&gt; K_j_k(env);				//Zuordnung Produkt k an Ressource j produzierbar
	IloIntArray m_j(env);							//Kosten pro Zeiteinheit für Nicht-Auslasten von ressource j
	// IloArray&lt;IloIntArray&gt; n_j_t(env);			//Nichtauslasten der Ressource j in Periode t, hier? oder als Entscheidungsvariable?

	//Einlesen aus Datei mit Hilfe CPLEX Parser - REIHENFOLGE IN .txt BEACHTEN!!!
	myfile &gt;&gt; s_k;
	myfile &gt;&gt; h_k;
	myfile &gt;&gt; z_k;
	myfile &gt;&gt; tr_k;
	myfile &gt;&gt; tb_k;
	myfile &gt;&gt; d_k_t;
	myfile &gt;&gt; a_k_i;
	myfile &gt;&gt; b_j_t;
	myfile &gt;&gt; K_j_k;
	myfile &gt;&gt; m_j;
	// myfile &gt;&gt; n_j_t; 

	int nProdukte = s_k.getSize();		//Abfrage Produkte
	int nRessourcen = b_j_t.getSize();	//Abfrage Ressourcen
	int nPerioden = b_j_t[0].getSize(); //Abfrage Perioden 

	std::cout &lt;&lt; &quot;Ruestkosten fuer Produkt k: &quot; &lt;&lt; s_k &lt;&lt; std::endl; //WICHTIG!!!
	std::cout &lt;&lt; &quot;Lagerhaltungskosten fuer Produkt k: &quot; &lt;&lt; h_k &lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Vorlaufzeit fuer Produkt k: &quot; &lt;&lt; z_k &lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Ruestzeit fuer Produkt k: &quot; &lt;&lt; tr_k &lt;&lt; std::endl;
	std::cout &lt;&lt; &quot;Produktionszeit fuer Produkt k: &quot; &lt;&lt; tb_k &lt;&lt; std::endl;

	IloInt n = d_k_t.getSize();	// Wäre hier Abfrage des Primärbedarfs
	std::cout &lt;&lt; &quot;Groesse des Primaerbedarfs fuer Produkt k in Periode t: &quot; &lt;&lt; n &lt;&lt; std::endl; //Anzahl der Produkte
	IloInt m = a_k_i.getSize();
	std::cout &lt;&lt; &quot;Direktbedarf zwischen Produkt k und i: &quot; &lt;&lt; m &lt;&lt; std::endl;
	IloInt o = b_j_t.getSize();
	std::cout &lt;&lt; &quot;Kapazität von Ressource j in Periode t: &quot; &lt;&lt; o &lt;&lt; std::endl;
	IloInt p = K_j_k.getSize();
	std::cout &lt;&lt; &quot;Produkt k an Ressource j produzierbar? &quot; &lt;&lt; p &lt;&lt; std::endl;

	//ENTSCHEIDUNGSVARIABLEN
	//binäre Entscheidungsvariable x //IloNumVarArray x(env, 100, 0, 1, ILOBOOL) 

	IloArray&lt;IloNumVarArray&gt; Gamma_k_t(env, nProdukte); //k in nProdukte 
	for (int t = 0; t &lt; nProdukte; ++t) 
		{
		Gamma_k_t[t] = IloNumVarArray(env, nPerioden, 0, 1, ILOBOOL); 
		}

	//Produktionsmenge des Produkts k in Periode t = q_k_t
	IloArray&lt;IloNumVarArray&gt; q_k_t(env, nProdukte);
	for (int t = 0; t &lt; nProdukte; ++t) 
		{
		q_k_t[t]=IloNumVarArray(env, nPerioden, 0, IloInfinity, ILOFLOAT); //untere Schranke = 0, daher NB 4 erfüllt
		}

	//Lagerbestand des Produktes k am Ende der Periode t = y_k_t
	IloArray&lt;IloNumVarArray&gt; y_k_t(env, nProdukte); 
	for (int t = 0; t &lt; nProdukte; ++t) 
		{
		y_k_t[t]=IloNumVarArray(env, nPerioden, 0, IloInfinity, ILOFLOAT); //Untere Schranke = 0, daher NB 4 erfüllt
		}	

	//NEBENBEDINGUNGEN 1-5

	//Nebenbedingung 1 

	for (int k = 0; k &lt; nProdukte; ++k) //k Element {1, ..., K}
		{
			for (int t = 0; t &lt; nPerioden; ++t) // t Element {1, ..., T}
				{
					cout &lt;&lt; &quot;Fuege Nebenbedingung 1 ein fuer Produkt: &quot; &lt;&lt; k &lt;&lt; &quot; in Periode &quot; &lt;&lt; t &lt;&lt; endl;
					IloExpr NB1(env);   // erst hier IloExpr NB(env anlegen)

					for (int i = 0; i &lt; nProdukte; ++i)
					{
						NB1-= a_k_i[k][i] * q_k_t[i][t];  //NB1 = NB1 -					
					}
					NB1-=  y_k_t[k][t];
					if (t-1&gt;=0)
					{
						NB1+= y_k_t[k][t-1];
					}
					if(t-z_k[k] &gt;= 0)
					{
						NB1+= q_k_t[k][t-z_k[k&rsqb;&rsqb;;
					}
					model.add(NB1 == d_k_t[k][t]);				// model.add erst hier 

			}
		}	

	//Nebenbedingung 2 // Schranke auf Basis von Produktionszeit mal Produktionsmenge/t plus Rüstzeit mal Entscheidungsvariable
	for (int j = 0; j &lt; nRessourcen; ++j)		//Vergleiche mit zweiter NB in testcasegenerator.pdf //j Element {1, ..., j}
		{
		for (int t = 0; t &lt; nPerioden; ++t)		//t Element {1, ..., t} 
			{
				IloExpr NB2(env);			// erst hier IloExpr NB(env anlegen)
				for(int k = 0; k &lt; nProdukte; ++k)
					{
					NB2+= tb_k[k] * q_k_t[k][t] + tr_k[k] * Gamma_k_t[k][t];  //sieht richtig aus
					}

				model.add(NB2 &lt;= b_j_t[j][t]);		
			}
		}

	//Nebenbedingung 3						
	for (int k = 0; k &lt; nProdukte ; ++k)
	{
		IloExpr NB3(env);
		for(int t=0; t &lt; nPerioden; ++t)
		{		
			NB3+= q_k_t[k][t] - 10000 * Gamma_k_t[k][t];			//M auf RIESIG setzen
		}	
		model.add(NB3 &lt;= 0);
	}

	//Minimiere Z
	//ZIELFUNKTION	
	IloExpr  ZF(env); 
	for (int k = 0; k &lt; nProdukte; ++k)
	{
		for(int t = 0; t &lt; nPerioden; ++t)
		{
			for (int j = 0; j &lt; nRessourcen; ++j) 
			{
			ZF+= s_k[k] * Gamma_k_t[k][t] + h_k[k] * y_k_t[k][t] + m_j[j] * (b_j_t[j][t] - tb_k[k] * q_k_t[k][t] + (tr_k[k] * Gamma_k_t[k][t])); //Klammern?!
			}
		}														
	}

	IloObjective myObj(env, ZF, IloObjective::Minimize);  //Zielfunktion //vgl.VL Folie 29

	//Modell hinzufuegen
	model.add(myObj);

	//Loesen //vgl. Folie 32 CPLEX-VL
	IloCplex cplex(env);
	cplex.extract(model);
	cplex.exportModel(&quot;model.lp&quot;);			// Ergebnisse werden in eine datei model.lp exportiert, die wird automatisch erstellt, man kann die mit dem txt editor öffnen

	if (cplex.solve()) {
     std::cout &lt;&lt; &quot;Systemstatus &quot; &lt;&lt; cplex.getStatus() &lt;&lt; std::endl;
     std::cout &lt;&lt; &quot;Zielfunktionswert = &quot; &lt;&lt; cplex.getObjValue() &lt;&lt; std::endl;

     //Ausgabe
     for(int k = 0; k &lt; nProdukte; ++k)
			{
				for (int t = 0; t &lt; nPerioden; ++t)
				{
					IloNum value = cplex.getValue(q_k_t[k][t]);
					std::cout &lt;&lt; &quot;Produktionsmenge_Gesamt Produkt &quot; &lt;&lt; k &lt;&lt; &quot; Periode &quot; &lt;&lt; t &lt;&lt; &quot; : &quot; &lt;&lt; value &lt;&lt; std::endl;
				}
			} 
	}
	else 
	{
		std::cout &lt;&lt; &quot;Keine Lösung&quot; &lt;&lt; std::endl;
	}

	ZF.end();
	//NB3.end();  
	//NB2.end();
	//NB1.end();

	m_j.end();
	K_j_k.end();
	b_j_t.end();
	a_k_i.end();
	d_k_t.end();
	tb_k.end();
	tr_k.end();
	z_k.end();
	h_k.end();
	s_k.end();
	myfile.close();
	env.end();

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Falls es etwas hilft: Die Ausgabe in der Datei &quot;Model.lp&quot; liest sich wie folgt:</p>
<p>\ENCODING=ISO-8859-1<br />
\Problem name: IloCplex</p>
<p>Minimize<br />
obj: 6 x1 - 20 x2 + 6 x3 - 20 x4 + 6 x5 - 20 x6 + 6 x7 - 20 x8 + 14 x9<br />
+ 14 x10 + 14 x11 + 14 x12 + x13<br />
Subject To<br />
c1: - x1 + x2 = 0<br />
c2: x1 - x3 + x4 = 0<br />
c3: - x2 - x5 + x6 = 2<br />
c4: - x4 + x5 - x7 + x8 = 2<br />
c5: 2 x2 + 2 x6 + x9 + x10 &lt;= 15<br />
c6: 2 x4 + 2 x8 + x11 + x12 &lt;= 15<br />
c7: 2 x2 + 2 x6 + x9 + x10 &lt;= 10<br />
c8: 2 x4 + 2 x8 + x11 + x12 &lt;= 10<br />
c9: x2 + x4 - 10000 x9 - 10000 x11 &lt;= 0<br />
c10: x6 + x8 - 10000 x10 - 10000 x12 &lt;= 0<br />
Bounds<br />
0 &lt;= x9 &lt;= 1<br />
0 &lt;= x10 &lt;= 1<br />
0 &lt;= x11 &lt;= 1<br />
0 &lt;= x12 &lt;= 1<br />
x13 = 500<br />
Binaries<br />
x9 x10 x11 x12<br />
End</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439299</guid><dc:creator><![CDATA[cppdussel]]></dc:creator><pubDate>Fri, 23 Jan 2015 22:37:25 GMT</pubDate></item><item><title><![CDATA[Reply to Visual Studio und CPLEX - seltsame Ausgaben, &amp;quot;nicht deklarierter Bezeichner&amp;quot; on Fri, 23 Jan 2015 22:56:19 GMT]]></title><description><![CDATA[<p>Deine NBs sind schon lange nicht mehr gültig, wenn du NB1.end() aufrufen willst.</p>
<pre><code class="language-cpp">for(...) {
   int variable = 5;
}
variable = 45; // FEHLER!
// jetzt existiert variable nicht mehr
// sobald ein { }-Block verlassen wurde (z.B. von einer for-Schleife), existieren Variablen, die innerhalb des Blocks definiert wurden, nicht mehr.

int variable = 5;
for(...) { }
variable = 12; // OK
// jetzt gibt es variable noch, da es außerhalb von { } definiert wurde
</code></pre>
<p>Wenn die Ausgabe nicht stimmt, hast du einen logischen Fehler. Wenn er konzeptionell falsch ist, solltest du vielleicht lieber mal deinen Betreuer fragen als hier. Sofern du denkst, dass du ihn theoretisch richtig hast, aber nur falsch in Code gegossen hast, solltest du mal abreißen, was er tun soll (u.U. Pseudo-Code).</p>
<p>Außerdem kannst du den Visual-Studio Debugger bemühen, der es dir erlaubt, Zeile für Zeile des Programms schrittweise durch zu gehen, während es läuft. Du kannst da die aktuellen Werte in den Variablen sehen und schauen, ob Erwartung und Realität übereinstimmen und gucken, ab wo es nicht mehr stimmt.</p>
<p>@ Mod: Ins C++-Forum damit bitte!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439300</guid><dc:creator><![CDATA[Jodocus]]></dc:creator><pubDate>Fri, 23 Jan 2015 22:56:19 GMT</pubDate></item><item><title><![CDATA[Reply to Visual Studio und CPLEX - seltsame Ausgaben, &amp;quot;nicht deklarierter Bezeichner&amp;quot; on Fri, 23 Jan 2015 22:55:20 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/u109509" rel="nofollow">SeppJ</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/f43" rel="nofollow">Mathematik und Physik</a> in das Forum <a href="http://www.c-plusplus.net/forum/f15" rel="nofollow">C++ (alle ISO-Standards)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439302</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 23 Jan 2015 22:55:20 GMT</pubDate></item><item><title><![CDATA[Reply to Visual Studio und CPLEX - seltsame Ausgaben, &amp;quot;nicht deklarierter Bezeichner&amp;quot; on Fri, 23 Jan 2015 22:56:30 GMT]]></title><description><![CDATA[<p>cppdussel schrieb:</p>
<blockquote>
<p>Das - so vermute ich - am leichtesten zu lösende Problem ist folgendes: Ich habe 3 Nebenbedingungen im Programm und bekomme, wenn ich den Befehl &quot;NB1.end();&quot; (auch NB2 und NB3)verwenden möchte, die Fehlermeldung &quot;nicht deklarierter Bezeichner&quot;. Ich vermute, dies hängt mit den &quot;For&quot;-Schleifen in den Nebenbedingungen zusammen, kann den Fehler aber nicht finden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Ja. Du musst das NB?.end() jeweils in den for-Schleifen hinzufügen.</p>
<p>Disclaimer: Ich kenn das Framework nicht und weiß insbesondere nicht, wie man damit arbeitet. Scheinbar haben die Klassen keine Destruktoren, insbesondere wird das end() nicht automatisch aufgerufen. Unter der Voraussetzung, dass man das dennoch braucht, gehört es in die for-Schleife. Vielleicht braucht man es auch nicht -- deine Entscheidung.</p>
<blockquote>
<p>Des Weiteren erzeugt mein Programm zur Fehlerfindung eine Textdatei &quot;Model.lp&quot;. Diese lässt sich mit der Musterlösung vergleichen und zeigt, dass bei mir durchaus einiges im Argen liegt. Meine Kenntnisse in c++ sind jedoch so begrenzt, dass ich an meine Grenzen stoße und daher Hilfe benötige.</p>
</blockquote>
<p>Na so ein Glück, dass die model.lp nichts mit C++ zu tun hat, oder? Was genau liegt da denn &quot;im Argen&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439303</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 23 Jan 2015 22:56:30 GMT</pubDate></item><item><title><![CDATA[Reply to Visual Studio und CPLEX - seltsame Ausgaben, &amp;quot;nicht deklarierter Bezeichner&amp;quot; on Fri, 23 Jan 2015 23:49:39 GMT]]></title><description><![CDATA[<p>alsoooo...vielen Dank erstmal! Sorry wegen der falschen Einordnung, dachte mir &quot;lineare Programmierung, Mathematik...mh, passt&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Bashar schrieb:</p>
<blockquote>
<p>Disclaimer: Ich kenn das Framework nicht und weiß insbesondere nicht, wie man damit arbeitet. Scheinbar haben die Klassen keine Destruktoren, insbesondere wird das end() nicht automatisch aufgerufen. Unter der Voraussetzung, dass man das dennoch braucht, gehört es in die for-Schleife. Vielleicht braucht man es auch nicht -- deine Entscheidung.</p>
<p>Na so ein Glück, dass die model.lp nichts mit C++ zu tun hat, oder? Was genau liegt da denn &quot;im Argen&quot;?</p>
</blockquote>
<p>Das mit dem .end() ist - soweit ich weiß - nicht zwingend notwendig für das Programm, sondern dient der Speicherfreigabe. Da ich hier zum Test eine kleine Instanz habe, ist das nicht tragisch, aber könnte es werden... oder so ^^ ich verschiebe das einfach in die NB und seh mir das Ergebnis an <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>zu der Ausgabe bzw. der .txt:<br />
Die Musterlösung sieht wie folgt aus:</p>
<pre><code>\ENCODING=ISO-8859-1
\Problem name: IloCplex

Minimize
 obj: 3 x2 + 3 x4 + 3 x6 + 3 x8 + 2 x9 + 5 x10 + 2 x11 + 5 x12 + 2 x13 + 5 x14
      + 2 x15 + 5 x16 + x17
Subject To
 c1:  x1 - x2  = 0
 c2:  x2 + x3 - x4  = 0
 c3:  - x1 + x5 - x6  = 2
 c4:  - x3 + x6 + x7 - x8  = 2
 c5:  2 x1 + x9 + x10  = 15
 c6:  2 x3 + x11 + x12  = 15
 c7:  2 x5 + x13 + x14  = 10
 c8:  2 x7 + x15 + x16  = 10
 c9:  x1 - 15 x9 &lt;= 0
 c10: x3 - 15 x11 &lt;= 0
 c11: x5 - 10 x13 &lt;= 0
 c12: x7 - 10 x15 &lt;= 0
Bounds
 0 &lt;= x9 &lt;= 1
 0 &lt;= x11 &lt;= 1
 0 &lt;= x13 &lt;= 1
 0 &lt;= x15 &lt;= 1
      x17 = 0
Binaries
 x9  x11  x13  x15 
End
</code></pre>
<p>Zum Vergleich noch mal meine .txt:</p>
<pre><code>\ENCODING=ISO-8859-1
\Problem name: IloCplex

Minimize
obj: 6 x1 - 20 x2 + 6 x3 - 20 x4 + 6 x5 - 20 x6 + 6 x7 - 20 x8 + 14 x9
+ 14 x10 + 14 x11 + 14 x12 + x13
Subject To
c1: - x1 + x2 = 0
c2: x1 - x3 + x4 = 0
c3: - x2 - x5 + x6 = 2
c4: - x4 + x5 - x7 + x8 = 2
c5: 2 x2 + 2 x6 + x9 + x10 &lt;= 15
c6: 2 x4 + 2 x8 + x11 + x12 &lt;= 15
c7: 2 x2 + 2 x6 + x9 + x10 &lt;= 10
c8: 2 x4 + 2 x8 + x11 + x12 &lt;= 10
c9: x2 + x4 - 10000 x9 - 10000 x11 &lt;= 0
c10: x6 + x8 - 10000 x10 - 10000 x12 &lt;= 0
Bounds
0 &lt;= x9 &lt;= 1
0 &lt;= x10 &lt;= 1
0 &lt;= x11 &lt;= 1
0 &lt;= x12 &lt;= 1
x13 = 500
Binaries
x9 x10 x11 x12
End
</code></pre>
<p>Gewisse Vorzeichenverdreher sind laut Betreuung (ich zitiere mein Gruppenmitglied, ich hoffe, er hat das richtig verstanden) nicht schlimm und darauf zurückzuführen, dass ich einfach eine andere Formulierung verwendet habe. Mir ist insbesondere aufgefallen, dass die Indizes oftmals genau um einen versetzt sind. Die 10000 bei c9 und c10 in meiner .txt sind Platzhalter für das &quot;Big M&quot; (Zur Linearisierung in einer der Nebenbedingungen), was ich noch näher bestimmen müsste.<br />
Meine Ausgabe gibt mir als Zielfunktionswert 369 aus und als</p>
<p>Produktionsmenge_gesamt Produkt 0 Periode 0: 1<br />
Produktionsmenge_gesamt Produkt 0 Periode 1: 1.5<br />
Produktionsmenge_gesamt Produkt 1 Periode 0: 3<br />
Produktionsmenge_gesamt Produkt 1 Periode 1: 3.5</p>
<p>Das ist insofern unlogisch, als dass ja nichts halbes produziert werden kann und der ZF mir zu hoch erscheint.</p>
<p>edit: mir ist ein dummer Fehler unterlaufen, ich habe in der Musterlösung die Sanktion der nicht-auslastung der Ressource noch nicht, in meinem Modell schon. Das habe ich jetzt ausgeklammert und es kommen dann folgende Werte heraus:</p>
<p>Zielfunktionswert: 4<br />
Produktionsmenge_gesamt Produkt 0 Periode 0: 0<br />
Produktionsmenge_gesamt Produkt 0 Periode 1: 0<br />
Produktionsmenge_gesamt Produkt 1 Periode 0: 2<br />
Produktionsmenge_gesamt Produkt 1 Periode 1: 2</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439305</guid><dc:creator><![CDATA[cppdussel]]></dc:creator><pubDate>Fri, 23 Jan 2015 23:49:39 GMT</pubDate></item></channel></rss>