<?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[Funktionen!]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe kurz ein Problem mit Funktionen.<br />
Ich brauche in einer Funktion den berechneten Wert aus der anderen Funktion.<br />
Wie kann ich das realisieren?</p>
<p>Also so sieht zB. ein Codeabschnitt aus:</p>
<pre><code class="language-cpp">SCIP_RETCODE ShuntingPricer::scip_redcost(
         SCIP*                 scip,
         SCIP_PRICER* pricer,
         SCIP_Real*         lowerbound,
         SCIP_RESULT* result )
{
#if ( SCIP_DEBUG &gt;= 2 )
   cerr &lt;&lt; &quot;CALL scip_redcost... &quot;;
#endif

if(gap &lt; 0.05)     //gap und LB kommen erst in der Funktion findAndAddAssignment
{*result=SCIP_DIDNOTRUN;
 *lowerbound=LB;

return SCIP_OKAY;
}
// set result pointer
*result = SCIP_SUCCESS;
return findAndAddAssignment( scip, dualVariables, false );
}

SCIP_RETCODE ShuntingPricer::findAndAddAssignment( SCIP* scip, const Instance::DualVariables&amp; dualVariables, bool farkas)  const
{

double sum = 0.0;
int nNeg=0;
vector&lt;int &gt; negIndex;

double red_cost = dualVariables.beta[i];

            if ( SCIPisNegative( scip,  red_cost ) ) {         
                        sum += red_cost;
                        negIndex.push_back( i );
                        ++nNeg;

         }

double UB = SCIPgetLPObjval(scip);
double LB = UB + sum;     //ich brauche LB und gap, kann diese aber nur  hier       
                            berechnen
double gap= (UB-LB)/UB;
return SCIP_OKAY;
}
</code></pre>
<p>Ich hoffe ihr könnt mir helfen.<br />
Danke!</p>
<p>Viele Grüße<br />
Tugba</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305963/funktionen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 12:07:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305963.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Jul 2012 19:01:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionen! on Fri, 13 Jul 2012 19:01:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe kurz ein Problem mit Funktionen.<br />
Ich brauche in einer Funktion den berechneten Wert aus der anderen Funktion.<br />
Wie kann ich das realisieren?</p>
<p>Also so sieht zB. ein Codeabschnitt aus:</p>
<pre><code class="language-cpp">SCIP_RETCODE ShuntingPricer::scip_redcost(
         SCIP*                 scip,
         SCIP_PRICER* pricer,
         SCIP_Real*         lowerbound,
         SCIP_RESULT* result )
{
#if ( SCIP_DEBUG &gt;= 2 )
   cerr &lt;&lt; &quot;CALL scip_redcost... &quot;;
#endif

if(gap &lt; 0.05)     //gap und LB kommen erst in der Funktion findAndAddAssignment
{*result=SCIP_DIDNOTRUN;
 *lowerbound=LB;

return SCIP_OKAY;
}
// set result pointer
*result = SCIP_SUCCESS;
return findAndAddAssignment( scip, dualVariables, false );
}

SCIP_RETCODE ShuntingPricer::findAndAddAssignment( SCIP* scip, const Instance::DualVariables&amp; dualVariables, bool farkas)  const
{

double sum = 0.0;
int nNeg=0;
vector&lt;int &gt; negIndex;

double red_cost = dualVariables.beta[i];

            if ( SCIPisNegative( scip,  red_cost ) ) {         
                        sum += red_cost;
                        negIndex.push_back( i );
                        ++nNeg;

         }

double UB = SCIPgetLPObjval(scip);
double LB = UB + sum;     //ich brauche LB und gap, kann diese aber nur  hier       
                            berechnen
double gap= (UB-LB)/UB;
return SCIP_OKAY;
}
</code></pre>
<p>Ich hoffe ihr könnt mir helfen.<br />
Danke!</p>
<p>Viele Grüße<br />
Tugba</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232565</guid><dc:creator><![CDATA[Tugba]]></dc:creator><pubDate>Fri, 13 Jul 2012 19:01:56 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen! on Fri, 13 Jul 2012 19:25:12 GMT]]></title><description><![CDATA[<p>Du willst also wissen, wie du mehrere Werte aus einer Funktion zurückgeben kannst. Entweder du übergibst einen Pointer oder eine Referenz auf Variablen, in die die Werte hineingespeichert werden sollen oder du erstellst eine Klasse, in der alle Variablen enthalten sind. So könnteste du alle Variablen zusammen zurückgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232572</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Fri, 13 Jul 2012 19:25:12 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen! on Fri, 13 Jul 2012 19:37:18 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>oder du erstellst eine Klasse, in der alle Variablen enthalten sind.</p>
</blockquote>
<p>Dazu gibt es aus der Standardbibliothek:</p>
<ul>
<li><a href="http://www.cplusplus.com/reference/std/utility/pair/" rel="nofollow"> <code>std::pair</code> </a></li>
<li><a href="http://www.cplusplus.com/reference/std/tuple/" rel="nofollow"><code>std::tuple</code></a> [C++11]</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/2232575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232575</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 13 Jul 2012 19:37:18 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen! on Sat, 14 Jul 2012 09:34:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>danke für Eure Tipps. Ich habe den Code jetzt so erweitert:</p>
<pre><code class="language-cpp">struct SCIP_PricerData
{
SCIP*  scip;  
double gap;
double LB;
};

SCIP_RETCODE ShuntingPricer::scip_redcost( 
         SCIP*                 scip, 
         SCIP_PRICER* pricer, 
         SCIP_Real*         lowerbound, 
         SCIP_RESULT* result ) 
{ 
#if ( SCIP_DEBUG &gt;= 2 ) 
   cerr &lt;&lt; &quot;CALL scip_redcost... &quot;; 
#endif 

SCIP_PRICERDATA* pricerdata;
pricerdata = SCIPpricerGetData(pricer);
assert(pricerdata != NULL);

if(pricer-&gt;gap &lt; 0.05)
{*result=SCIP_DIDNOTRUN;
 *lowerbound=pricer-&gt;LB;

return SCIP_OKAY;
}

// set result pointer
*result = SCIP_SUCCESS; 
return findAndAddAssignment( scip, dualVariables, false ); 
} 

SCIP_RETCODE ShuntingPricer::findAndAddAssignment( SCIP* scip, const Instance::DualVariables&amp; dualVariables, bool farkas)  const 
{ 

double sum = 0.0; 
int nNeg=0; 
vector&lt;int &gt; negIndex; 
double red_cost = dualVariables.beta[i]; 

            if ( SCIPisNegative( scip,  red_cost ) ) {         
                        sum += red_cost; 
                        negIndex.push_back( i ); 
                        ++nNeg; 

         } 

double UB = SCIPgetLPObjval(scip);
pricer-&gt;LB = UB + sum;
pricer-&gt;gap= (UB-LB)/UB; 

return SCIP_OKAY; 
}
</code></pre>
<p>So müsste es doch eigentlich klappen,oder??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232679</guid><dc:creator><![CDATA[Tugba]]></dc:creator><pubDate>Sat, 14 Jul 2012 09:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen! on Sat, 14 Jul 2012 09:47:33 GMT]]></title><description><![CDATA[<p>Formatiere bitte deinen Code</p>
<pre><code class="language-cpp">struct SCIP_PricerData
{
    SCIP*  scip;
    double gap;
    double LB;
};

SCIP_RETCODE ShuntingPricer::scip_redcost(
    SCIP*                 scip,
    SCIP_PRICER* pricer,
    SCIP_Real*         lowerbound,
    SCIP_RESULT* result )
{
#if ( SCIP_DEBUG &gt;= 2 )
    cerr &lt;&lt; &quot;CALL scip_redcost... &quot;;
#endif

    SCIP_PRICERDATA* pricerdata;
    pricerdata = SCIPpricerGetData(pricer);
    assert(pricerdata != NULL);

    if(pricer-&gt;gap &lt; 0.05)
    {
        *result=SCIP_DIDNOTRUN;
        *lowerbound=pricer-&gt;LB;

        return SCIP_OKAY;
    }

    // set result pointer
    *result = SCIP_SUCCESS;
    return findAndAddAssignment( scip, dualVariables, false );
}

SCIP_RETCODE ShuntingPricer::findAndAddAssignment( SCIP* scip, const Instance::DualVariables&amp; dualVariables, bool farkas)  const
{

    double sum = 0.0;
    int nNeg=0;
    vector&lt;int &gt; negIndex;
    double red_cost = dualVariables.beta[i];

    if ( SCIPisNegative( scip,  red_cost ) )
    {
        sum += red_cost;
        negIndex.push_back( i );
        ++nNeg;
    }

    double UB = SCIPgetLPObjval(scip);
    pricer-&gt;LB = UB + sum;
    pricer-&gt;gap= (UB-LB)/UB;

    return SCIP_OKAY;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2232681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232681</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 14 Jul 2012 09:47:33 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen! on Sat, 14 Jul 2012 18:07:16 GMT]]></title><description><![CDATA[<p>Kompiliert es denn überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232824</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 14 Jul 2012 18:07:16 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen! on Sat, 14 Jul 2012 18:11:25 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Kompiliert es denn überhaupt?</p>
</blockquote>
<p>Ich bin zu faul den Code durchzulesen, wo meinst du denn hakt es?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232827</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 14 Jul 2012 18:11:25 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen! on Sat, 14 Jul 2012 18:12:36 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Kompiliert es denn überhaupt?</p>
</blockquote>
<p>Ich bin zu faul den Code durchzulesen, wo meinst du denn hakt es?</p>
</blockquote>
<p>Wo ist denn pricer definiert? Soweit ich gesehen habe nur in einer anderen Funktion...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232828</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 14 Jul 2012 18:12:36 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen! on Sat, 14 Jul 2012 21:28:40 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Kompiliert es denn überhaupt?</p>
</blockquote>
<p>Ich bin zu faul den Code durchzulesen, wo meinst du denn hakt es?</p>
</blockquote>
<p>Wo ist denn pricer definiert? Soweit ich gesehen habe nur in einer anderen Funktion...</p>
</blockquote>
<p>Ach, global deklarierte Variablen wahrscheinlich - ob das sinnvoll ist mal außenvor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2232857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2232857</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 14 Jul 2012 21:28:40 GMT</pubDate></item></channel></rss>