On Sonntag, 12. November 2000 15:22, you wrote:
<snip>
>
> sorry, i should have read well ...
>
> can you give a minimal example-file, because i never had this
> problem with the listings-pacckage. some of listings are over
> 4 pages.
>
> Herbert
>
> p.s. my latex preamble for listings, inserted by
> \lst{filename}{cpation}
>
> \usepackage[breaklines]{listings}
> \renewcommand\lstlistingname{Algorithmus}
> %\renewcommand\lstlistingname{\textbf{Algorithmus}}
> \renewcommand\lstlistlistingname{Algorithmenverzeichnis}
> \renewcommand\thelstlisting{\thesection .\arabic{lstlisting}}
> %\renewcommand\thelstlisting{\textbf{\thechapter .\arabic{lstlisting}}}
> \newcommand{\lst}[2]{%
>     \noindent\rule[-1ex]{\columnwidth}{0.3mm}\vspace{-1ex}
>
> \lstinputlisting[caption={#2},label={#1},stringspaces=false,lineskip=-1pt,e
>xtendedchars=true,%
>
> basicstyle=\tt\footnotesize,labelstep=1,labelstyle=\tiny,indent=2em,languag
>e=Java,breaklines]{#1} \vspace{1ex}%
> }

Hi,

this dont works for me, i get an "Package keyval error ...". I have included 
my example an the corresponding c++ and dvi file.

cu,
Torsten. 

-- 
Torsten Hahn
Agricolastr. 14-16 / Zi. 6111A / 09599 Freiberg (Germany)
mail: [EMAIL PROTECTED]
pgp key available @ http://math-www.uni-paderborn.de/pgp/
pgp fingerprint = C981 42A2 707A 65A4 5266  BDC0 523F E4D8 8C87 4209
#LyX 1.1 created this file. For more info see http://www.lyx.org/
\lyxformat 2.16
\textclass article
\begin_preamble
\usepackage[breaklines]{listings}
\lstloadlanguages{C++}
\end_preamble
\language german
\inputencoding latin1
\fontscheme default
\graphics default
\paperfontsize default
\spacing single 
\papersize Default
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default

\layout Subsection

zweiter codeblock
\layout Standard


\latex latex 

\backslash 
lstinputlisting[language=C++,basicstyle=
\backslash 
fontfamily{pcr}
\backslash 
fontseries{m}
\backslash 
selectfont
\backslash 
footnotesize,indent=15pt,extendedchars=true,breaklines,float,caption={[Kurze
 Beschreibung]Ein tolles floatentes Beispiel eines C++ Listings},frame={tb}]{mai
n.cpp}
\the_end

listings_3.dvi

/***************************************************************************
                          main.cpp  -  description
                             -------------------
***************************************************************************/

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <cmath>
#include <cstring>
#include <fstream>

/* eigene Klassen einbinden */

#include "debuginfo.h"
#include "parameter.h"
#include "genlib.h"
#include "randomnumber.h"
#include "messwerte.h"
#include "dataarray.h"
#include "data.h"
#include "fitness.h"

using namespace std;

int MaxAnzahlDaten = 2100;
int DataArray::MaxNumberOfData = MaxAnzahlDaten;
int Messwerte::MaxNumberOfData = MaxAnzahlDaten;

/** Wichtige Parameter für den GA */
int AnzahlParameter = 3;
int Populationsgroesse = 50;
int MaxGenerationen=2000;
int AnzahlFittest = 30;
int AnzahlMutanten = 25;
int AnzahlUeberlebende = 1;
int AnzahlKinder = Populationsgroesse-AnzahlUeberlebende-AnzahlMutanten;
int Generation=1;

/** Temp Variablen und Schleifenzähler init*/
int ii,jj,ij,ji,i=0,j=0;
double d, dd, tmp1=0, tmp2, tmp3, x, y, fx, i0;
int AnzMesswerte=0;

/** Misc Opts */
/** ID Nr. für Parameter initialisieren */
int Parameter::ID=0;
/** 1. Aufruf des RNG */
bool RandomNumber::FirstRandom=true;

int main(int argc, char *argv[])
{
	double mutSchrittweite[3] = {1.50 , 1.50 , 1.50};
	

	cout << endl;
	cout << "--- Genfit Programm Version 0.02 (beta release) ---" << endl;
	cout << "" << endl << endl;

	/** Ab hier geht so richtiger Programmcode los*/

	cout << endl;

  double p[AnzahlParameter];
	DataArray ExpDaten;
	Messwerte MwExpDaten;
	/** Objekt für abspeichern der Fitness */
	Data *FitnessSave;
	FitnessSave = new Data(MaxGenerationen);
  /** Objekt für Startwerte der Evolution */
	Data *StartValue;
	StartValue = new Data(AnzahlParameter);

	/** Daten aus File einlesen und in ExpDaten speichern*/
	
	char file[160]="/home/torsten/Docs/Studienarbeit/Daten/File1.dat";
	char FitnessFile[160]="/home/torsten/Docs/Studienarbeit/Daten/Fit.dat";
	char ParameterFile[160]="/home/torsten/Docs/Studienarbeit/Daten/P1.dat";
	MwExpDaten.setFileName(file);
	MwExpDaten.ReadData();

	ExpDaten.setNumberOfData(MwExpDaten.getNumberOfData());
	AnzMesswerte =  MwExpDaten.getNumberOfData();

	/** Falls Datenfile zu groß - Warnung und Abbruch */

	if (AnzMesswerte > MaxAnzahlDaten){
  	cout << "Zu viele Daten im File !!" << endl;
		return(0);
	}
	
	int cntr1=0;
	for(i=1;i<=AnzMesswerte;i++){
		ExpDaten.setXValue(i , MwExpDaten.getFeldValue(cntr1));
		cntr1++;
		ExpDaten.setYValue(i , MwExpDaten.getFeldValue(cntr1));
		cntr1++;
	}

	/** Aktuelle Parameter ausgeben */

	cout << "\tMaxNumberOfData:\t" << MaxAnzahlDaten << endl;
	cout << "\tFileName:\t\t" << file << endl;
	cout << "\tFitnessFile:\t\t" << FitnessFile << endl;
	cout << "\tParameterFile:\t\t" << ParameterFile << endl;
	cout << "\tNumberOfData:\t\t" << AnzMesswerte << endl;
  cout << "\tMaxGenerationen:\t" << MaxGenerationen << endl;
	cout << "\tAnzahlParameter:\t" << AnzahlParameter << endl;
	cout << "\tPopulationsgröße:\t" << Populationsgroesse << endl;
	cout << "\tÜberlebende:\t\t" << AnzahlUeberlebende << endl;
	cout << "\tAnzahl Fittest:\t\t" << AnzahlFittest << endl;
	cout << "\tAnzahl Mutanten:\t" << AnzahlMutanten << endl;
	cout << "\tPopulationsgröße:\t" << Populationsgroesse << endl;
	cout << "\tmutSchrittweite:\t" << mutSchrittweite << endl;
	cout << "\tModell:\t\t\t" << "Transient Fit (2nd order)" << endl;
	
	cout << endl;

	/** Array mit Parameter-Objekten erzeugen */
	cout << "\t2 Arrays mit Parameter-Objekten erzeugen ..." << endl;

	Parameter *parameter[AnzahlParameter+1][Populationsgroesse+1];
	for(i=1;i<=AnzahlParameter;i++){
  	for(j=1;j<=Populationsgroesse;j++){
			parameter[i][j]= new Parameter;
		}  	
	}

	Parameter *parameter_neu[AnzahlParameter+1][Populationsgroesse+1];
	for(i=1;i<=AnzahlParameter;i++){
  	for(j=1;j<=Populationsgroesse;j++){
			parameter_neu[i][j]= new Parameter;
		}  	
	}

	
	/** Zufallszahlen(Objekt) erzeugen */
	cout << "\tZufallszahlen(Objekt) erzeugen ..." << endl;

	RandomNumber r;
	dd = r.EqualRandom();
	
	/** Parameterobjekte mit default-Start-werten initialisieren und mutieren */
	cout << "\tParameterobjekte initialisieren und mutieren .." << endl;

 	StartValue->setValue(1 , 50.0);

	StartValue->setValue(2 , 140.0);
	StartValue->setValue(3 , 80.0);/*
	StartValue->setValue(4 , 1.0);
	
	StartValue->setValue(5 , 1.1);
	StartValue->setValue(6 , 1.0);
	StartValue->setValue(7 , 1.0);

	StartValue->setValue(8 , 30.0);
	StartValue->setValue(9 , 140.0);
	StartValue->setValue(10 , 70.0); */


	for(i=1;i<=AnzahlParameter;i++){
		for(j=1;j<=Populationsgroesse;j++){
			parameter[i][j]->setValue(StartValue->getValue(i));
			parameter[i][j]->mutateValue(r.NormalDoubleRandom(mutSchrittweite[i-1]));
		}
	}

  /** Fitness Objekt erzeugen */
	cout << "\tFitness Objekt erzeugen ..." << endl;
  ii = Populationsgroesse;
	Fitness _Fitness(ii);

	/** Paarungs-array erzeugen */
	cout << "\tPaarungs Objekt erzeugen ..." << endl;
	int Paarungen[2][AnzahlKinder+1];			
	
	/** Fittness der einzelnen Parameter berechnen */
	cout << "\tAnpassung läuft, bitte warten ..." << endl << endl;

	/** Dunkelstrom i0 aus letzen 3 Messwerten berechnen */
	i0 =(ExpDaten.getYValue(AnzMesswerte)
	+ ExpDaten.getYValue(AnzMesswerte-2) + ExpDaten.getYValue(AnzMesswerte-2))/3;

	while (Generation <= MaxGenerationen) {
 		for(j=1;j<=Populationsgroesse;j++){
		tmp1 = 0;
		for(i=1;i<=AnzMesswerte;i++){
			x =  ExpDaten.getXValue(i);
			y =  ExpDaten.getYValue(i);
			for (jj=1;jj<=AnzahlParameter;jj++){
				p[jj] = parameter[jj][j]->getValue();      	
			}
			fx = p[1]*exp(-(x-p[2])*(x-p[2])/(2*p[3]*p[3]));
			dd = (y - fx)*(y - fx);
			tmp1 = tmp1 + dd;
		}
		_Fitness.setValue(j,j,tmp1);
	}
	
	/** Fittness sortieren ... */
  _Fitness.do_sort();
	
	/** beste Fittnes abspeichern */
	FitnessSave->setValue(Generation, _Fitness.getValue(1));
	
	/** Paarungen zwischen den besten Individuen festlegen */
	
	for (i=1;i<=AnzahlKinder;i++){
  	Paarungen[1][i] = r.EqualUnsignedRandom(AnzahlFittest);
		Paarungen[2][i] = r.EqualUnsignedRandom(AnzahlFittest);
	}

	/** Ueberlebende in neue Population uebernehmen*/
	
	for (j=1;j<=AnzahlUeberlebende;j++){
		for (i=1;i<=AnzahlParameter;i++){
			ii = _Fitness.getParameterID(j);
			dd = parameter[i][ii]->getValue();
			parameter_neu[i][j]->setValue(dd);
		}
  }

  /** Nachkommen erzeugen durch Mittelwertbildung */
	for (i=1; i<=AnzahlKinder; i++){
			ii = _Fitness.getParameterID(Paarungen[1][i]);
			ij = _Fitness.getParameterID(Paarungen[2][i]);
			for (j=1;j<=AnzahlParameter;j++){
				d  = r.StdEqualRandom();
  			dd = ( d*parameter[j][ii]->getValue() + (1-d)*parameter[j][ij]->getValue() );
				parameter_neu[j][i+AnzahlUeberlebende]->setValue(dd);
			}
		}
		
	/** Nachkommen erzeugen durch Vertauschung */
  /**
	for (i=1; i<=AnzahlKinder; i++){
  	ii = _Fitness.getParameterID(Paarungen[1][i]);
		ij = _Fitness.getParameterID(Paarungen[2][i]);
    for (j=1;j<=AnzahlParameter;j++){
    	d = r.StdEqualRandom(); // Zufallszahl zw. [0,1]
			if (d<=0.5) {
				dd = parameter[j][ii]->getValue();
				parameter_neu[j][i+AnzahlUeberlebende]->setValue(dd);
			}
			else {
      	dd = parameter[j][ij]->getValue();
				parameter_neu[j][i+AnzahlUeberlebende]->setValue(dd);
			}
		}
	}  */
  /** Nachkommen erzeugen durch Mutation */
	
	for (i=1;i<=AnzahlMutanten;i++){
  	ii = _Fitness.getParameterID(i);
		for (j=1;j<=AnzahlParameter;j++){
			parameter[j][ii]->mutateValue(r.NormalDoubleRandom(mutSchrittweite[j-1]));
			dd = 	parameter[j][ii]->getValue();
			parameter_neu[j][i+AnzahlUeberlebende+AnzahlKinder]->setValue(dd);
		}
	}
	
	/** Alte Population mit neuer überschreiben */
	
	for (i=1;i<=Populationsgroesse;i++){
  	for (j=1;j<=AnzahlParameter;j++){
			dd = parameter_neu[j][i]->getValue();
			parameter[j][i]->setValue(dd);
		}
	}

	Generation++;
	cout << "\tFitness:\t" << _Fitness.getValue(1) << "\t\tGeneration:\t" <<
	Generation << "\r" << flush;
	}

	/** Ergebniss ausgeben */
	cout << endl << endl << "Ergebniss:" << endl;
	cout << "I0:" << "\t" << i0 << endl;
	ii = _Fitness.getParameterID(1);
	for (i=1;i<=AnzahlParameter;i++){
  	cout << "P" << i << ":" << "\t" << parameter[i][ii]->getValue() << endl;
		StartValue->setValue(i,parameter[i][ii]->getValue());
	}
	cout << endl << "Fitness und ermittelte Parameter abspeichern ... " << endl;
	FitnessSave->SaveData(FitnessFile);
	StartValue->SaveData(ParameterFile);
	cout << "\a" << flush;
	/** Programm ende */

  return EXIT_SUCCESS;
}

Reply via email to