WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Hilfe bei Optimierungsaufgabe benötigt

 

matlabpit
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.01.10
Wohnort: ---
Version: 7.3
     Beitrag Verfasst am: 27.01.2010, 16:19     Titel: Hilfe bei Optimierungsaufgabe benötigt
  Antworten mit Zitat      
Hi, bin ein wenig am Verzweifeln.
Versuche gerade eine Methode weiterzuentwickeln, und stoße an meine Grenzen.
Es geht darum, minimale Produktionskosten einer Maschine zu berechnen.
Nach Eingabe einiger Werte, soll anhand von Formeln, die bereits stehen, die dafür optimalen Werte zweier Variablen (Schnittgeschwindigkeit und Vorschub) bestimmt werden.

Nun unterliegt diese Minimierungsaufgabe einiger Nebenbedingungen. Zwei davon (zulässige Motorpower und Oberflächenbeschaffenheit) hat das Programm angenommen.

Ich hatte versucht noch zwei weitere Nebenbedingungen (Drehzahlbeschränkung und Schnittkraftbeschränkung) nachträglich in den Algorithmus einzufügen.
Aus einem für mich unverständlichen Grund funktioniert das nicht und meine Werte sind dementsprechend wenig realistisch.

Hier der Code, welcher in vier separaten Arbeitsbereichen angelegt ist, um das Ganze nicht zu unübersichtlich zu gestalten, lasse ich Arbeitsbereich drei weg, da dieser identisch mit dem zweiten ist, nur für einen anderen Fall:

Code:
%Optimierungsfenster

clc
clear all

global fixed_cost C2 C3 X1 C5 C6 C4 X2 X3 C Cp C7;


d=input('Diameter of cutter: ');
arad=input('Radial Depth of Cut: ');    % arad=4;
a=input('Axial Depth of Cut: ');        % a=4;
K=input('Length to be travelled: ');

z=4;            % z=input('Teeth of cutter: ');
                     
ct=49.5;        % ct=input('Tooling cost for selected tool: ');

Pm=10;          % Pm=input('Motor power: ');

cut_mat=2;      % cut_mat=input('1 for Carbide/2 for HSS/3 for Ceramics: ');

op_typ=1;       % op_typ=input('1 for Face milling/2 for Plain and end milling: ');

if op_typ==1
    Ea=input('Entry/lead angle: ');
elseif op_typ==2
    Ea=0;
else
    disp ('unknown');
end
entrance_angle=Ea*(pi/180);

Ca=5;           % Ca=input('Clearance angle: ');

clearance_angle=Ca*(pi/180);

Raat=2;         % Raat=input('surface roughness: ');

V=100;          % V=input('Starting value of velocity(mm/min): ');

f=0.05;         % f=input('Starting value of feedrate(mm/tooth): ');

C=837;          % C=input('Constant for cutting speed equation from table according to workpiece material: ');

p=1;            % p=input('Number of machining setups: ');

q=3;            % q=input('Number of machining operations: ');

% machine tool and overhead cost in EUR
c0=0.42;        % c0=input('machine and overhead cost: ');

% labor cost
c1=0.075;       % c1=input('labor cost: ')

ts=2;
ttc=0.5;
Kp=0.68;
E=0.9;


fixed_cost=p*((c0+c1)*ts)+q*((c0+c1)*ttc);

C2=(((c0+c1)*pi*d*K)/(1000*z));


if op_typ==1
    Q=(1/pi)*asin(arad/d);
elseif op_typ==2
    Q=(1/4)+((1/(2*pi))*asin(((2*arad)/d)-1));
elseif op_typ==3
    disp ('Error in input');
end

g=0.14;
w=0.28;
W=1.3;

% if cut_mat==1
%     n=0.275;
% elseif cut_mat==2
%     n=0.125;
% elseif cut_mat==3
%     n=0.6;
% else
%     disp('Unknown Cutter');
% end
n=0.15;

X1=(1/n)-1;                                
X2=((w+g)/n)-1;
X3=-(1/n);

C3=(ct)*((pi*d*K*Q*(5^(g/n))*C^X3)/(60000*z*(a^((g-w)/n))));

C4=((Kp*a*arad*z*W)/(60*pi*d*E*Pm));

if op_typ==1
    C6=318/(((tan(entrance_angle)+cot(clearance_angle))*Raat));
else
    C5=(79.5/(d*Raat));
end

C7=(1000/(pi*d*8000));

x0=[V; f];
A=[];
b=[];
Aeq=[];
beq=[];
lb=[0 0];
ub=[Inf Inf];
options=optimset('MaxFunEvals',50000,'MaxIter',5000,'Display','iter');
if op_typ==1
    [x, machining_cost_for_operation]=fmincon(@fun1,x0,A,b,Aeq,beq,lb,ub,@nonlcon1,options)
else
    [x, machining_cost_for_operation]=fmincon(@fun1,x0,A,b,Aeq,beq,lb,ub,@nonlcon2,options)
end

machining_time=C2/((c0+c1)*x(1)*x(2))
% suggested_value_for_velocity=x(1)
% suggested_value_for_feedrate=x(2)
power_required_for_operation=C4*Pm*x(1)*x(2)*Cp
% end_milling_constraint=C5*Raat*x(2)^2
% face_milling_constraint=C6*Raat*x(2)
first_section = C2*(x(1)^(-1))*(x(2)^(-1))
second_section=C3*(x(1)^X1)*(x(2)^X2)
revolution_per_minute=x(1)*1000/(pi*d)




Code:
% Nebenbedingung für den Fall eins

function [power_constraint, surface_constraint, revolution_constraint, force_constraint] = nonlcon1(x)
global C6 C4 Cp C7 Pm;

if x(2)<= 0.02
    Cp=1.7;
elseif x(2)> 0.02 && x(2)<= 0.05
    Cp=1.4;
elseif x(2)> 0.05 && x(2)<= 0.07
    Cp=1.3;
elseif x(2)> 0.07 && x(2)<= 0.1
    Cp=1.25;
elseif x(2)> 0.1 && x(2)<= 0.12
    Cp=1.2;
elseif x(2)> 0.12 && x(2)<= 0.15
    Cp=1.15;
elseif x(2)> 0.15 && x(2)<= 0.18
    Cp=1.11;
elseif x(2)> 0.18 && x(2)<= 0.20
    Cp=1.08;
elseif x(2)> 0.20 && x(2)<= 0.22
    Cp=1.06;
elseif x(2)> 0.22 && x(2)<= 0.25
    Cp=1.04;
elseif x(2)> 0.25 && x(2)<= 0.28
    Cp=1.01;
elseif x(2)> 0.28 && x(2)<= 0.30
    Cp=1.00;
elseif x(2)> 0.30 && x(2)<= 0.33
    Cp=0.98;
elseif x(2)> 0.33 && x(2)<= 0.35
    Cp=0.97;
elseif x(2)> 0.35 && x(2)<= 0.38
    Cp=0.95;
elseif x(2)> 0.38 && x(2)<= 0.40
    Cp=0.94;
elseif x(2)> 0.40 && x(2)<= 0.45
    Cp=0.92;
elseif x(2)> 0.45 && x(2)<= 0.50
    Cp=0.90;
elseif x(2)> 0.55 && x(2)<= 0.60
    Cp=0.88;
elseif x(2)> 0.60 && x(2)<= 0.70
    Cp=0.87;
elseif x(2)> 0.70 && x(2)<= 0.80
    Cp=0.84;        
elseif x(2)> 0.80 && x(2)<= 0.90
    Cp=0.82;
elseif x(2)> 0.90 && x(2)<= 1.00
    Cp=0.80;
elseif x(2)> 1.00 && x(2)<= 1.50
    Cp=0.78;
else x(2)>= 1.50
    Cp=0.72;    
end

x(1)
x(2)

power_constraint= (C4*x(1)*x(2)*Cp)-1
surface_constraint= (C6*x(2))-1
revolution_constraint=(C7*x(1))-1                   %doesn't seem to work
force_constraint=(60000*C4*x(2)*Cp*Pm)-1    %doesn't seem to work




Code:
% Hauptfunktion

function objective_function = fun1(x)
global C2 C3 X1 X2;

   
objective_function = C2*x(1)^-1*x(2)^-1+C3*(x(1)^X1)*(x(2)^X2)



Nochmal mein Problem: power_constraint und surface_constraint werden vom Programm als Nebenbedingungen verstanden. revolution_constraint und force_constraint aus irgend einem Grund nicht.

Für die Opimierungsaufgabe wurde die Funktion "nonlcon" verwendet.
Ich hoffe, das Ganze ist nicht zu verwirrend und ihr könnt mir helfen. Wie gesagt, ich verzweifle hier dran. Bei Fragen bzw. Unklarheiten bitte nochmal nachfragen.

Vielen vielen Dank schonmal


Edit by Martin: Bitte in Zukunft die Code-Formatierung verwenden Wink Danke!
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 28.01.2010, 11:43     Titel:
  Antworten mit Zitat      
Hallo matlabpit,

ich bin dran, bräuchte aber noch vernünftige Werte für d, K und Ea.

Und könntest Du vielleicht noch genauer beschreiben, inwiefern die Nebenbedingungen "nicht akzeptiert" werden? Also: Was erwartest Du und was passiert stattdessen?

Wenn Du lieber selber herumprobierst: Meine Vermutung wäre, dass die Nebenbedingungen von der ausgegebenen Lösung verletzt werden. Ursache dafür können sehr verschiedene Größenordnungen von Zielfunktion und Nebenbedingungen sein. Hier hilft eine Skalierung (Multiplizieren mit einem Faktor). Es kann aber auch sein, dass die zulässige Menge, die durch alle Nebenbedingungen gebildet wird, leer ist. Wenn das nicht der Fall ist, ist es für fmincon sehr hilfreich, wenn man einen zulässigen Startpunkt angibt.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
matlabpit
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.01.10
Wohnort: ---
Version: 7.3
     Beitrag Verfasst am: 28.01.2010, 12:03     Titel:
  Antworten mit Zitat      
Hallo Bijick,

dank dir schonmal riesig für die Mühe.
Vernünftige Werte sind:
d = 16 (entspricht einem Fräserdurchmesser)
K = 40000 (ist eine Distanzangabe; hier wirkt sich eine Veränderung jedoch nicht auf die Bedingungen aus, man kann also genauso 150 schreiben)
Ea = 45 (ist ein Winkel am Fräserkopf)

Die ersten beiden Nebenbedingungen werden von Matlab akzeptiert. Sie sorgen dafür, dass x(1) und x(2) nicht ins unendliche gehen sondern nach oben beschränkt sind.
Nun habe ich nachträglich versucht, die beiden anderen Bedingungen einzubauen (also die für Kraft und für Umdrehungen), da die Werte immernoch viel zu hoch waren.
Ich hatte zuvor Werte wie 30000 Umdrehungen pro Minute herausbekommen. Das ist viel zu hoch. Also hatte ich mit den beiden Beschränkungen versucht, dort dagegen zu wirken und hatte bei der Umdrehungs-Nebenbedingung mal willkürlich eine Obergrenze von 8000 eingegeben.

Wenn man die ursprünglichen beiden Bedingungen weg lässt, meldet das Programm einen Fehler, da fmincon keine constraints also Nebenbedingungen erkennt.
Durch Weglassen der beiden zusätzlichen Nebenbedingugen ändert sich gar nichts.
Nun habe ich auch versucht, die ersten beiden Nebenbedingungen wegzulassen und nur die beiden Neuen wirken zu lassen. Hier wird mir auch ein Fehler gemeldet.

Ich denke daher, dass das Programm die zusätzlichen Bedingungen einfach nicht erkennt. Vielleicht muss irgendwo noch eine Verlinkung oder sowas eingegeben werden. Kann das sein?

Danke nochmal
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 28.01.2010, 16:13     Titel:
  Antworten mit Zitat      
Hallo matlabpit,

so, jetzt habe ich dein Problem verstanden. Damit werden meine Nachfragen von oben auch überflüssig... Smile

Das Problem liegt in der Formulierung der Nebenbedingung nonlcon1. Diese muss in der Form

Code:
function Vektor_Funktionswerte = nonlcon1(x_Werte)
% oder
function [Vektor_Funktionswerte,Jacobi-Matrix] = nonlcon1(x_Werte)


geschrieben werden. Die Funktion fmincon fasst jetzt power_constraint als Funktionswert und surface_constraint als Gradient auf. Zusätzliche Ausgabewerte wie revolution_constraint und force_constraint werden tatsächlich einfach ignoriert.

Lösung:

Code:
function constraints = nonlcon1(x)
global C6 C4 Cp C7 Pm

Cp=...

constraints(1) = (C4*x(1)*x(2)*Cp)-1;  % power_constraint
constraints(2) = (C6*x(2))-1; % surface_constraint
constraints(3) = (C7*x(1))-1 ;    % revolution_constraint              
constraints(4) = (60000*C4*x(2)*Cp*Pm)-1;  % force_constraint


Ansonsten empfehle ich, mal die Seite "Avoiding Global Variables via Anonymous and Nested Functions" in der Hilfe zu lesen.

Herzliche Grüße
Bijick

P.S. Einfache Schranken für die Variablen lassen sich über die Variablen lb (untere Schranken) und ub (obere Schranken) im Funktionsaufruf von fmincon angeben.
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
matlabpit
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.01.10
Wohnort: ---
Version: 7.3
     Beitrag Verfasst am: 28.01.2010, 17:19     Titel:
  Antworten mit Zitat      
Hallo Bijick,

habe deinen Ansatz in nonlcon übernommen.
Nun gibt mir das Programm eine Fehlermeldung in der eingefügten Zeile 112 der opti_cost aus:

[x, machining_cost_for_operation]=fmincon(@fun1,x0,A,b,Aeq,beq,lb,ub,@nonlcon1,options)





und zwar mit der Fehlermeldung:


Diameter of cutter: 16
Radial Depth of Cut: 4
Axial Depth of Cut: 4
Length to be travelled: 444
Entry/lead angle: 45
Warning: Large-scale (trust region) method does not currently solve this type of problem,
using medium-scale (line search) instead.
> In fmincon at 317
In opti_cost at 112

objective_function =

0.5524

??? Error using ==> fmincon
The constraint function nonlcon1 must return two outputs:
the nonlinear inequality constraints and
the nonlinear equality constraints.

Error in ==> opti_cost at 112
[x, machining_cost_for_operation]=fmincon(@fun1,x0,A,b,Aeq,beq,lb,ub,@nonlcon1,options)



Habe die empfohlene Seite durchgelesen, allerdings reichen meine Matlab-Kenntnisse bei weitem nicht aus, um Parallelen ziehen zu können.

Habe ich irgend etwas übersehen?
Was mache ich mit dem Hinweis, dass zwei Outputs, also eine Ungleichheits-Nebenbedingung und eine Gleichheits-Nebenbedingung ausgegeben werden müssen?

Und nochmals vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 28.01.2010, 18:57     Titel:
  Antworten mit Zitat      
Hallo matlabpit,

das kommt davon, wenn man aus der Erinnerung etwas zusammentippt. Da habe ich doch glatt die Gleichungsrestriktionen vergessen. Sorry dafür.

Richtig ist: Die Nebenbedingung muss in der Form

Code:
function [Ungleichungen,Gleichungen] = nonlcon1(x)
% oder
function [Ungl,Gl,Jacobi_Gleichungen,Jacobi_Ungleichungen] = mycon(x)


angegeben werden. Da Du nur Ungleichungsnebenbedingungen hast (?), muss es bei Dir also lauten:

Code:
function [constraints leer] = nonlcon1(x)
global C6 C4 Cp C7 Pm

Cp=...

constraints(1) = (C4*x(1)*x(2)*Cp)-1;  % power_constraint
constraints(2) = (C6*x(2))-1; % surface_constraint
constraints(3) = (C7*x(1))-1 ;    % revolution_constraint              
constraints(4) = (60000*C4*x(2)*Cp*Pm)-1;  % force_constraint

leer = [];


Weiters ist mir noch aufgefallen, dass Pm überall als global definiert werden muss. Die Warnung schaltest Du aus mit

Code:
options=optimset('MaxFunEvals',5000,'MaxIter',50,'Display','iter',...
    'LargeScale','off');


Und dann solltest Du unbedingt Deine Variablen auf die gleiche Größenordnung skalieren. Das ist wesentlich für das Funktionieren der Schrittweitenbestimmung. Dazu multiplizierst Du beispielsweise f mit 1000

Code:
x0=[V; f*1000];


und setzt als erste Zeile in fun1 und nonlcon1

Code:
x(2)=x(2)/1000;


Zu den "nested functions" können wir ja nochmal kommen, wenn alles soweit läuft. Die sind nur dafür da, globale Variablen zu vermeiden, von denen Du ja eine ganze Menge hast.

Sag einfach Bescheid, wenn es immer noch hakt.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
matlabpit
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.01.10
Wohnort: ---
Version: 7.3
     Beitrag Verfasst am: 29.01.2010, 19:56     Titel:
  Antworten mit Zitat      
Hallo Bijick,

super. Das Programm läuft und die Nebenbedingungen werden mit einbezogen.

Nun bin ich schon den ganzen Tag daran, verschiedene Szenarien durchzuspielen und durchzurechnen und versuche den Sinn hinter den Ergebnissen zu verstehen.
Weiß noch nicht genau, wie diese Formeln zusammenspielen.
Die force_constraint habe ich erstmal weggelassen. Die verfälscht meiner Meinung nach das Ergebnis (warum auch immer). Da kommen dann plötzlich utopische Werte für Kosten und Zeit heraus.

Bei Verwendung der anderen drei Nebenbedingungen verstehe ich noch nicht, wie ich überhaupt das Ergebnis beeinflussen kann, da die revolution_constraint so stark einschränkt, dass die Werte, die ich oben eintippe überhaupt keinen Unterschied machen, ausser dass sie zu einer minimalen Veränderung in der benötigten Kraft führen.
Naja. Vielleicht steige ich da noch dahinter.

Bei einer Sache stoße ich mal wieder an meine Wissensgrenzen.
Gebe ich z.B.
d=30
a=4
arad=4
length=40000
Ea=45

ein, so stößt Matlab anscheinend an seine Grenzen. Es benötigt plötzlich all seine Iterationsschritte und kommt auf kein Ergebnis.
Gebe ich als Länge 400 oder sogar 400000000 ein, dann funktioniert das Programm. Sieht also so aus, als ob irgend etwas das Programm verwirrt.

Ist das ein Fehler im Programm? Wie kann ich das umgehen?


Habe auch mal die Werte für f oder x(2) geändert, deinem Vorschlag folgend.
Das dürfte meiner Laienmeinung nach allerdings nicht richtig sein. Die Werte, die ich herausbekomme ergeben keinen Sinn mehr, da die first_section und die second_section, die ich mir anzeigen lasse um zu gucken in welchem Maße sie auf die Kosten einwirken, gemeinsam nicht mehr den Kostenbetrag ergeben. Ich dachte auch, dass die Werte bereits aufeinander abgestimmt sind. Habe die Formeln mit ihren Einheiten bereits hunderte Male kontrolliert in den vergangenen Wochen.

Wieso meinst du, dass die Variablen nicht auf die gleiche Größenordnung skaliert sind?

Weiterhin hatte ich versucht, ein gui für diese Aufgabe zu erstellen. Ich will also in eine Benutzeroberfläche die Werte für das Berechnen eingeben und dann soll mir Matlab das Ergebnis berechnen.
Prinzipiell also wie es zur Zeit ist, nur optisch eben schöner.
Weißt du wie das geht? Durch das Tutorial in der Hilfe kann ich zwar nun verstehen, wie die dieses spezielle Gui erstellen, aber (wen wunderts) es nicht auf mein Anliegen übertragen.

Tausend Dank mal wieder

Gruß

Matlabpit
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 01.02.2010, 11:34     Titel:
  Antworten mit Zitat      
Hallo Matlabpit,

freut mich, dass es nun funktioniert.

matlabpit hat Folgendes geschrieben:
Es benötigt plötzlich all seine Iterationsschritte und kommt auf kein Ergebnis. Gebe ich als Länge 400 oder sogar 400000000 ein, dann funktioniert das Programm. Sieht also so aus, als ob irgend etwas das Programm verwirrt.

Ist das ein Fehler im Programm? Wie kann ich das umgehen?


Das wird daran liegen, dass fmincon zur Berechnung des nächsten Iterationspunktes Ableitungsinformationen der Funktion nutzt. Das ist kein Fehler, sondern ein Qualitätsmerkmal (jedenfalls für Mathematiker Smile). Ist die Ableitung bei x0 bei Verwendung von L=40000 nahe Null, weil etwa an der Stelle x0 ein Sattelpunkt vorliegt, so kommt die Optimierung nicht in Gang. Da hilft nur, einen anderen Startwert zu wählen.


matlabpit hat Folgendes geschrieben:
Habe auch mal die Werte für f oder x(2) geändert, deinem Vorschlag folgend.
Das dürfte meiner Laienmeinung nach allerdings nicht richtig sein. (...) Ich dachte auch, dass die Werte bereits aufeinander abgestimmt sind. Habe die Formeln mit ihren Einheiten bereits hunderte Male kontrolliert in den vergangenen Wochen.

Wieso meinst du, dass die Variablen nicht auf die gleiche Größenordnung skaliert sind?


Du hast die Werte sicher korrekt bestimmt, so wie sie sich aus Deiner Anwendung ergeben. Für die Optimierung ist es aber sinnvoll, dass alle Variablen, also x(1) und x(2) ähnliche Werte annehmen. Also besser 1 und 5 oder 1 und 0.5 als 100 und 0.05. Natürlich wäre es Quatsch, anstelle einer Länge von 5 Zentimetern plötzlich mit einer Länge von 500 Metern zu rechnen, nur um schön optimieren zu können, aber das muss man auch nicht. Man kann nämlich der Variable den Wert 500 zuweisen:

Code:
f=0.05;
x0 = [V,f*1000];


Jetzt sind x0(1) und x0(2) ähnlich groß. Das ist gut für die Berechnung des nächsten Iterationspunktes. Stell Dir vielleicht mal x0 als Vektor im R² vor. Wenn x0(1) = 100 und x0(2) = 0.05, so sieht man fast nur den Anteil von x0(1). Bei x0(2) = 500 sieht das schon ganz anders aus. Möglich wäre natürlich auch x0(2) = 50, das passt auch gut zu 100.

Zum Rechnen muss man nun natürlich wieder auf den "richtigen" Wert für f kommen. Das geschieht dann in der Zielfunktion und der Nebenbedingung. An die Zielfunktion wird also x(2) = 500 übergeben. Wie groß ist der richtige Wert?

Code:
x(2)=x(2)/1000;


Dann hat f = x(2) wieder den Wert 0.05 und die Formeln stimmen. Es dürfte sich also an den Rechnungen selber nichts ändern.
Eine Fehlerquelle könnten die oberen Schranken ub sein, falls Du die inzwischen auf einen endlichen Wert gesetzt hast. Der muss zu der neuen Größenordnung passen.

Code:
ub(2) = ub*1000;


matlabpit hat Folgendes geschrieben:
Weiterhin hatte ich versucht, ein gui für diese Aufgabe zu erstellen. Ich will also in eine Benutzeroberfläche die Werte für das Berechnen eingeben und dann soll mir Matlab das Ergebnis berechnen.


Sollen andere auch mit diesem GUI rechnen? Ich habe die Erfahrung gemacht, dass man bei einem Code, den man selber geschrieben hat, von einem GUI nicht profitiert, sondern nur mehr Aufwand hat. Wenn aber auch andere mit dem Code arbeiten sollen, kann ihnen ein GUI beim Verständis helfen. Ich bin da aber auch nicht der Profi, vielleicht erstellst Du dafür lieber ein eigenes Thema in der Kategorie GUIs. Vielleicht findest Du dort aber auch schon ähnliche Themen, die Dir weiterhelfen.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
matlabpit
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.01.10
Wohnort: ---
Version: 7.3
     Beitrag Verfasst am: 03.02.2010, 09:29     Titel:
  Antworten mit Zitat      
Hallo Bijick,

habe nun mal wieder ein wenig rumprobiert und auch die Werte für 'f' auf 'f*1000' angepasst.
Jetzt läuft das Programm auch, wenn ich 40000 als K eingebe.
Hat das Problem des Sattelpunktes wohl anscheinend beheben können.

Jetzt ist allerdings wieder ein neues Problem aufgetreten, von welchem ich glaube, es hängt mit dem Faktor 1000 zusammen.
Never ending story mit diesem Algorithmus Wink

Der Wert für 'f' wird erstmal als 78,... ausgegeben, was um den Faktor 1000 zu hoch sein sollte.
Gebe ich zum Test nochmal x(2) im Command Window von Matlab ein, wird mir der Wert 0.078 ausgegeben.
Was ist denn da passiert? Matlab kann doch unmöglich vergessen, das Ausgabeergebnis durch 1000 zu teilen, dies aber für die gezielte, geforderte Ausgabe dann nachholen, oder?

x =

402.1239
78.1764

x(2)

ans =

0.0782



Die oberen und unteren Grenzen habe ich auf 'unendlich' bzw. 'null' gelassen, da ich die Werte für 'V' und 'f' nicht künstlich beeinflussen wollte. Dies soll durch die Nebenbedingungen geschehen.
Meinst du, das sollte man so nicht machen?
Werte für 'ub' und 'ob' einzusetzen entspricht doch einer weiteren Nebenbedingung, oder?


Danke für den Gui-Tipp. Ich werde die Frage mal im zuständigen Forum versuchen zu stellen. Benötige es nicht für mich, sondern muss es anderen vorzeigen. Da denke ich macht sich ein Gui schon deutlich besser, als die Programmiereroberfläche.

Gruß

Matlabpit
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 03.02.2010, 20:55     Titel:
  Antworten mit Zitat      
Hallo matlabpit,

das geht doch gut voran. Smile

matlabpit hat Folgendes geschrieben:
Der Wert für 'f' wird erstmal als 78,... ausgegeben, was um den Faktor 1000 zu hoch sein sollte. Gebe ich zum Test nochmal x(2) im Command Window von Matlab ein, wird mir der Wert 0.078 ausgegeben.

Das kann ich nicht reproduzieren. An welcher Stelle lässt Du denn x ausgeben? Prüf das nochmal nach, ansonsten kannst Du mir auch die aktuellen Dateien per Mail schicken. Dann schau ich mal drüber. Bei mir ist x bei der Ausgabe

Code:
[x, machining_cost_for_operation]=fmincon(@fun1,x0,A,b,Aeq,beq,lb,ub,@nonlcon1,options);

um den Faktor 1000 zu groß und bleibt es auch. Vielleicht verarbeitest Du x noch weiter?

matlabpit hat Folgendes geschrieben:
Die oberen und unteren Grenzen habe ich auf 'unendlich' bzw. 'null' gelassen, da ich die Werte für 'V' und 'f' nicht künstlich beeinflussen wollte. Dies soll durch die Nebenbedingungen geschehen. Meinst du, das sollte man so nicht machen? Werte für 'ub' und 'ob' einzusetzen entspricht doch einer weiteren Nebenbedingung, oder?

fmincon funktioniert bei mir einfach besser, wenn Schranken angegeben sind. Warum, ist mir nicht recht klar, aber es ist bei jedem Mal dasselbe. Null ist übrigens schon eine solche Schranke (Alternative wäre ja -Inf). Du hast Recht, dass es sich dabei um zusätzliche Nebenbedingungen handelt, aber es sind sehr einfache, die den Algorithmus nicht verlangsamen. Vielleicht gibt es ja doch technische oder logische Oberschranken, die Du zum Probieren mal einstzen könntest.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
matlabpit
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.01.10
Wohnort: ---
Version: 7.3
     Beitrag Verfasst am: 08.02.2010, 14:42     Titel:
  Antworten mit Zitat      
Hallo Bijick,

sag mal, ich hatte in meinem Matlabfenster den workspace geleert, da ich wissen wollte, ob er sich bei jedem Durchlauf meiner Daten aktualisiert (also rein zum Test)

Nun ist der workspace leer und zeigt mir meine eingegebenen Werte nicht mehr an. Kann also nicht nachträglich irgendwelche Variablen erfahren, die ich eingegeben bzw die Matlab errechnet hat.

Weisst du, wie ich den workspace wieder betriebstüchtig mache?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabpit
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.01.10
Wohnort: ---
Version: 7.3
     Beitrag Verfasst am: 08.02.2010, 15:15     Titel:
  Antworten mit Zitat      
hm. nun wird es wieder angezeigt, aber ein neues Problem ist aufgetreten.

Aus irgend einem Grund, wird mein cut_mat Wert immer als 2 angenommen. Obwohl ich ihn explizit anders eingebe.
Habe die komplette Aufgabe durchgeschaut, ob ich diesen Wert irgendwo fest definiert habe. Das ist nicht der Fall.
Außerdem kann ich mir meine C2, C3, ... Werte nicht mehr ausgeben lassen. Sie werden auch nicht im workspace angezeigt. Das war auch anders.

Hast du eine Ahnung, wie das sein kann?
Hier nochmal der mittlerweile leicht überarbeitete Code:

Code:
function opti_cost

clc
clear all

GUI_1_voll;
load tmp.mat

global fixed_cost C2 C3 X1 C5 C6 C4 X2 X3 C Cp C7 N Pm Vektor Kosten variable;


d=variable{1};          
a=variable{2};
arad=variable{3};      
K=variable{4};  
N=variable{5};
op_typ=variable{6};
cut_mat=variable{7};
Ca=variable{9};
z=variable{10};
Pm=variable{11};
Raat=variable{12};
C=variable{13};
% n=variable{14};
Kp=variable{15};
c1=variable{16};
c0=variable{17};
ct=variable{18};


if op_typ==1
    Ea=variable{8};
elseif op_typ==2
    Ea=0;
else
    disp ('unknown');
end

entrance_angle=Ea*(pi/180);
clearance_angle=Ca*(pi/180);

V=100;          % V=input('Starting value of velocity(mm/min): ');

f=0.05;         % f=input('Starting value of feedrate(mm/tooth): ');

p=1;            % p=input('Number of machining setups: ');

q=3;            % q=input('Number of machining operations: ');

% machine tool and overhead cost in EUR 0.42
% c0=input('machine and overhead cost: ');

% labor cost in Euro 0.02
% c1=input('labor cost in Euro: ')

ts=2;
ttc=0.5;
E=0.9;


fixed_cost=p*((c0+c1)*ts)+q*((c0+c1)*ttc);

C2=(((c0+c1)*pi*d*K)/(1000*z));


if op_typ==1
    Q=(1/pi)*asin(arad/d);
elseif op_typ==2
    Q=(1/4)+((1/(2*pi))*asin(((2*arad)/d)-1));
elseif op_typ==3
    disp ('Error in input');
end


g=0.14;
w=0.28;
W=1.3;

if cut_mat==1
    n=0.275;
elseif cut_mat==2
    n=0.125;
elseif cut_mat==3
    n=0.6;
else
    disp('Unknown Cutter');
end


X1=(1/n)-1;                                
X2=((w+g)/n)-1;
X3=-(1/n);

C3=(ct)*((pi*d*K*Q*(5^(g/n))*C^X3)/(60000*z*(a^((g-w)/n))));

C4=((Kp*a*arad*z*W)/(60*pi*d*E*Pm));

if op_typ==1
    C6=318/((tan(entrance_angle)+cot(clearance_angle))*Raat);
else
    C5=(79.5/(d*Raat));
end

C7=(1000/(pi*d*N));

x0=[V; f*1000];
A=[];
b=[];
Aeq=[];
beq=[];
lb=[0 0];
ub=[1000 Inf];
options=optimset('MaxFunEvals',50000,'MaxIter',5000,'Display','iter','Largescale','off');
if op_typ==1
    [x, machining_cost_for_operation]=fmincon(@fun1,x0,A,b,Aeq,beq,lb,ub,@nonlcon1,options);
else
    [x, machining_cost_for_operation]=fmincon(@fun1,x0,A,b,Aeq,beq,lb,ub,@nonlcon2,options)
end

x(2)=x(2)/1000;

Vektor=x
Kosten=machining_cost_for_operation
machining_time=C2/((c0+c1)*x(1)*x(2))
% suggested_value_for_velocity=x(1)
% suggested_value_for_feedrate=x(2)
power_required_for_operation=C4*Pm*x(1)*x(2)*Cp
% end_milling_constraint=C5*Raat*x(2)^2
% face_milling_constraint=C6*Raat*x(2)
first_section_of_cost= C2*(x(1)^(-1))*(x(2)^(-1))
second_section_of_cost=C3*(x(1)^X1)*(x(2)^X2)
revolution_per_minute=x(1)*1000/(pi*d)


Code:
function varargout = GUI_1_voll(varargin)
% GUI_1_VOLL M-file for GUI_1_voll.fig
%      GUI_1_VOLL, by itself, creates a new GUI_1_VOLL or raises the existing
%      singleton*.
%
%      H = GUI_1_VOLL returns the handle to a new GUI_1_VOLL or the handle to
%      the existing singleton*.
%
%      GUI_1_VOLL('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in GUI_1_VOLL.M with the given input arguments.
%
%      GUI_1_VOLL('Property','Value',...) creates a new GUI_1_VOLL or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before GUI_1_voll_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to GUI_1_voll_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help GUI_1_voll

% Last Modified by GUIDE v2.5 06-Feb-2010 14:43:14

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @GUI_1_voll_OpeningFcn, ...
                   'gui_OutputFcn',  @GUI_1_voll_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before GUI_1_voll is made visible.
function GUI_1_voll_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to GUI_1_voll (see VARARGIN)

% Choose default command line output for GUI_1_voll
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes GUI_1_voll wait for user response (see UIRESUME)
uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = GUI_1_voll_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
% varargout{1} = handles.output;



function edit17_Callback(hObject, eventdata, handles)
% hObject    handle to edit17 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit17 as text
%        str2double(get(hObject,'String')) returns contents of edit17 as a double


% --- Executes during object creation, after setting all properties.
function edit17_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit17 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit18_Callback(hObject, eventdata, handles)
% hObject    handle to edit18 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit18 as text
%        str2double(get(hObject,'String')) returns contents of edit18 as a double


% --- Executes during object creation, after setting all properties.
function edit18_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit18 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit19_Callback(hObject, eventdata, handles)
% hObject    handle to edit19 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit19 as text
%        str2double(get(hObject,'String')) returns contents of edit19 as a double
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end

% --- Executes during object creation, after setting all properties.
function edit19_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit19 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit20_Callback(hObject, eventdata, handles)
% hObject    handle to edit20 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit20 as text
%        str2double(get(hObject,'String')) returns contents of edit20 as a double


% --- Executes during object creation, after setting all properties.
function edit20_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit20 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit21_Callback(hObject, eventdata, handles)
% hObject    handle to edit21 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit21 as text
%        str2double(get(hObject,'String')) returns contents of edit21 as a double


% --- Executes during object creation, after setting all properties.
function edit21_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit21 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit22_Callback(hObject, eventdata, handles)
% hObject    handle to edit22 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit22 as text
%        str2double(get(hObject,'String')) returns contents of edit22 as a double


% --- Executes during object creation, after setting all properties.
function edit22_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit22 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit23_Callback(hObject, eventdata, handles)
% hObject    handle to edit23 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit23 as text
%        str2double(get(hObject,'String')) returns contents of edit23 as a double


% --- Executes during object creation, after setting all properties.
function edit23_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit23 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit24_Callback(hObject, eventdata, handles)
% hObject    handle to edit24 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit24 as text
%        str2double(get(hObject,'String')) returns contents of edit24 as a double


% --- Executes during object creation, after setting all properties.
function edit24_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit24 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit25_Callback(hObject, eventdata, handles)
% hObject    handle to edit25 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit25 as text
%        str2double(get(hObject,'String')) returns contents of edit25 as a double


% --- Executes during object creation, after setting all properties.
function edit25_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit25 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit26_Callback(hObject, eventdata, handles)
% hObject    handle to edit26 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit26 as text
%        str2double(get(hObject,'String')) returns contents of edit26 as a double


% --- Executes during object creation, after setting all properties.
function edit26_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit26 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit27_Callback(hObject, eventdata, handles)
% hObject    handle to edit27 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit27 as text
%        str2double(get(hObject,'String')) returns contents of edit27 as a double


% --- Executes during object creation, after setting all properties.
function edit27_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit27 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit28_Callback(hObject, eventdata, handles)
% hObject    handle to edit28 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit28 as text
%        str2double(get(hObject,'String')) returns contents of edit28 as a double


% --- Executes during object creation, after setting all properties.
function edit28_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit28 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit29_Callback(hObject, eventdata, handles)
% hObject    handle to edit29 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit29 as text
%        str2double(get(hObject,'String')) returns contents of edit29 as a double


% --- Executes during object creation, after setting all properties.
function edit29_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit29 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



% function edit30_Callback(hObject, eventdata, handles)
% % hObject    handle to edit30 (see GCBO)
% % eventdata  reserved - to be defined in a future version of MATLAB
% % handles    structure with handles and user data (see GUIDATA)
% a=str2double(get(hObject, 'String'));
% if isnan(a)
%     set(hObject, 'String', 'NaN');
%     errordlg('Input must be a number','Error');
% end
% % Hints: get(hObject,'String') returns contents of edit30 as text
% %        str2double(get(hObject,'String')) returns contents of edit30 as a double
%
%
% % --- Executes during object creation, after setting all properties.
% function edit30_CreateFcn(hObject, eventdata, handles)
% % hObject    handle to edit30 (see GCBO)
% % eventdata  reserved - to be defined in a future version of MATLAB
% % handles    empty - handles not created until after all CreateFcns called
%
% % Hint: edit controls usually have a white background on Windows.
% %       See ISPC and COMPUTER.
% if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
%     set(hObject,'BackgroundColor','white');
% end



function edit31_Callback(hObject, eventdata, handles)
% hObject    handle to edit31 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit31 as text
%        str2double(get(hObject,'String')) returns contents of edit31 as a double


% --- Executes during object creation, after setting all properties.
function edit31_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit31 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit32_Callback(hObject, eventdata, handles)
% hObject    handle to edit32 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit32 as text
%        str2double(get(hObject,'String')) returns contents of edit32 as a double


% --- Executes during object creation, after setting all properties.
function edit32_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit32 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit33_Callback(hObject, eventdata, handles)
% hObject    handle to edit33 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit33 as text
%        str2double(get(hObject,'String')) returns contents of edit33 as a double


% --- Executes during object creation, after setting all properties.
function edit33_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit33 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



function edit34_Callback(hObject, eventdata, handles)
% hObject    handle to edit34 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=str2double(get(hObject, 'String'));
if isnan(a)
    set(hObject, 'String', 'NaN');
    errordlg('Input must be a number','Error');
end
% Hints: get(hObject,'String') returns contents of edit34 as text
%        str2double(get(hObject,'String')) returns contents of edit34 as a double


% --- Executes during object creation, after setting all properties.
function edit34_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit34 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end






% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

uiresume(handles.figure1);

variable{1}=str2double(get(handles.edit17, 'String'));
variable{2}=str2double(get(handles.edit18, 'String'));
variable{3}=str2double(get(handles.edit19, 'String'));
variable{4}=str2double(get(handles.edit20, 'String'));
variable{5}=str2double(get(handles.edit21, 'String'));
variable{6}=str2double(get(handles.edit22, 'String'));
variable{7}=str2double(get(handles.edit23, 'String'));
variable{8}=str2double(get(handles.edit24, 'String'));
variable{9}=str2double(get(handles.edit25, 'String'));
variable{10}=str2double(get(handles.edit26, 'String'));
variable{11}=str2double(get(handles.edit27, 'String'));
variable{12}=str2double(get(handles.edit28, 'String'));
variable{13}=str2double(get(handles.edit29, 'String'));
% variable{14}=str2double(get(handles.edit30, 'String'));
variable{15}=str2double(get(handles.edit31, 'String'));
variable{16}=str2double(get(handles.edit32, 'String'));
variable{17}=str2double(get(handles.edit33, 'String'));
variable{18}=str2double(get(handles.edit34, 'String'));

save tmp.mat variable;
close;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabpit
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.01.10
Wohnort: ---
Version: 7.3
     Beitrag Verfasst am: 08.02.2010, 16:56     Titel:
  Antworten mit Zitat      
hat sich doch erledigt.

Ist anscheinend nicht mehr möglich, die Werte im workspace anzeigen zu lassen, sobald man über ein GUI eingibt
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 08.02.2010, 17:29     Titel:
  Antworten mit Zitat      
Hallo matlabpit,

das liegt daran, dass ein GUI eine

Code:


ist. Diese haben einen eigenen so genannten workspace. Suchwort in der Matlab-Hilfe: "M-File Functions" im Kapitel "M-File Programming". Was nach dem Ausführen übrig bleibt ist der so genannte base workspace.

Wenn Du die Werte später nachschauen willst, kannst Du sie mit

Code:


in eine .mat-Datei speichern.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
matlabpit
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.01.10
Wohnort: ---
Version: 7.3
     Beitrag Verfasst am: 08.02.2010, 17:37     Titel:
  Antworten mit Zitat      
ok
merci
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.